Non è possibile. Quali porte sono pubblicate sull'host di docker è strettamente una decisione che deve essere presa dall'amministratore locale, non dall'immagine che stanno cercando di eseguire; questo sarebbe (a) un problema di sicurezza (hey, ho appena aperto l'accesso ssh al tuo sistema!) e (b) incline al fallimento (il mio contenitore webserver non può legarsi sulla porta 80 perché sto già facendo funzionare un server su porta 80).
Se si desidera evitare lunghe righe di comando docker run
, considerare l'utilizzo di qualcosa come docker-compose per automatizzare il processo. È quindi possibile passare finestra mobile-comporre una configurazione come:
mywebserver:
image: myname/mywebserver
ports:
- 80:8080
E poi un semplice docker-compose up
inizierà il vostro contenitore con porto per container 8080 destinato ad ospitare la porta 80.
Aggiornamento 2017/03/11
In risposta al commento di Willa:
Utilizzando docker-compose
no h elp con il problema di collisione della porta. Il problema di collisione della porta è un motivo per cui le immagini non dovrebbero essere in grado di specificare i binding della porta host. Stavo semplicemente offrendo docker-compose
in alternativa alle lunghe righe di comando docker run
con più associazioni di porte. Il problema di collisione delle porte potrebbe consentire a un container di eseguire un attacco denial-of-service sul tuo host: se, ad esempio, un container si avvia e si collega alla porta 80 prima di un server Apache sul tuo host (o in un altro contenitore), allora hai appena perso il tuo servizio web.
Riguardo al problema di sicurezza: se un'immagine è stata in grado di specificare i binding della porta host, sarebbe possibile che i contenitori aprissero l'accesso al contenitore a vostra insaputa. Permettere a un utente remoto di accedere a un container sul tuo host ti apre alla possibilità di un compromesso dell'host nel caso in cui le funzionalità del namespace nel kernel non riescano a isolare completamente il contenitore, e anche se ti fidi completamente dell'isolamento ti apre a potenziali problemi legali se tale contenitore viene utilizzato per scopi illeciti. In entrambi i casi è una cattiva idea.
Grazie! che aiuta –
In che modo l'uso di docker-compose risolve il potenziale di collisione in porto? Inoltre puoi esporre un po 'sul problema di sicurezza? – Willa