AGGIORNAMENTO
Metodo più semplice: utilizzo della finestra mobile exec
Docker versione 1.3 o successiva supporta il comando execche si comporta in modo simile nsenter. Questo comando può eseguire un nuovo processo in un contenitore già in esecuzione (nel contenitore deve essere già in esecuzione un processo PID 1). È possibile eseguire /bin/bashper esplorare lo stato del contenitore:
docker exec -t -i mycontainer /bin/bash
consultare la documentazione della riga di comando Docker
Metodo alternativo 1
Istantanea
È possibile valutare il filesystem contenitore in questo modo:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
In questo modo, è possibile valutare il filesystem del container in esecuzione nel preciso momento temporale. Il contenitore è ancora in esecuzione, non sono incluse modifiche future.
Successivamente puoi eliminare l'istantanea usando (il filesystem del container in esecuzione non è interessato!):
docker rmi mysnapshot
Metodo alternativo 2
ssh
Se hai bisogno di un accesso continuo, puoi installare sshd nel tuo contenitore ed eseguire il demone sshd:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
In questo modo, puoi eseguire la tua app usando ssh (connettiti ed esegui ciò che desideri).
AGGIORNAMENTO: metodo alternativo 3
nsenter
Utilizzare nsenter, consultare https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
La versione breve è: con nsenter, è possibile ottenere una shell in un contenitore esistente, anche se quel contenitore non esegue SSH o alcun tipo di demone per scopi speciali
docker exec <container> bash. Quindi, basta aprire una shell all'interno del contenitore.