Altro
Come faccio a entrare nella shell di un contenitore Docker?
Sto iniziando a lavorare con Docker. Sto usando l'immagine base di WordPress e docker-compose.
Sto cercando di entrare con ssh in uno dei contenitori per ispezionare i file/directory che sono stati creati durante la costruzione iniziale. Ho provato a eseguire docker-compose run containername ls -la
, ma questo non ha fatto nulla. Anche se lo facesse, preferirei avere una console dove posso attraversare la struttura delle directory, piuttosto che eseguire un singolo comando. Qual è il modo giusto per farlo con Docker?
979
3
docker attach
ti permetterà di connetterti al tuo contenitore Docker, ma questo non è proprio la stessa cosa dissh
. Se il tuo contenitore sta eseguendo un webserver, per esempio,docker attach
ti connetterà probabilmente allo stdout del processo del web server. Non ti darà necessariamente una shell.Il comando
docker exec
è probabilmente quello che stai cercando; questo ti permetterà di eseguire comandi arbitrari all'interno di un contenitore esistente. Per esempio:Naturalmente, qualsiasi comando si stia eseguendo deve esistere nel filesystem del contenitore.
Nel comando precedente `
è il nome o l'ID del contenitore di destinazione. Non importa se stai usando o meno
docker compose; basta eseguire
docker ps` e usare o l'ID (una stringa esadecimale visualizzata nella prima colonna) o il nome (visualizzato nella colonna finale). Ad esempio, dato:Posso eseguire:
Potrei realizzare la stessa cosa eseguendo:
Allo stesso modo, potrei avviare una shell nel contenitore;
docker exec
sarà sicuramente una soluzione. Un modo semplice per lavorare con la domanda che hai posto è quello di montare la directory all'interno di Docker nella directory del sistema locale.In modo da poter visualizzare le modifiche nel percorso locale istantaneamente.
Un'altra opzione è usare nsenter.