ATUALIZAÇÃO
Método mais fácil: Usando o docker exec
O Docker versão 1.3 ou mais recente suporta o comando exec
que se comporta de maneira semelhante nsenter
. Este comando pode executar um novo processo no contêiner já em execução (o contêiner já deve ter o processo PID 1 em execução). Você pode executar /bin/bash
para explorar o estado do contêiner:
docker exec -t -i mycontainer /bin/bash
consulte a documentação da linha de comandos do Docker
Método alternativo 1
Instantâneo
Você pode avaliar o sistema de arquivos do contêiner desta maneira:
# 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
Dessa forma, você pode avaliar o sistema de arquivos do contêiner em execução no momento preciso. O contêiner ainda está em execução, nenhuma alteração futura está incluída.
Mais tarde, você pode excluir o instantâneo usando (o sistema de arquivos do contêiner em execução não é afetado!):
docker rmi mysnapshot
Método alternativo 2
ssh
Se você precisar de acesso contínuo, poderá instalar o sshd no seu contêiner e executar o daemon sshd:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
Dessa forma, você pode executar seu aplicativo usando ssh (conecte e execute o que quiser).
UPDATE: Método alternativo 3
nsenter
Use nsenter
, consulte https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
A versão curta é: com o nsenter, você pode obter um shell em um contêiner existente, mesmo que esse contêiner não execute SSH ou qualquer tipo de daemon de finalidade especial
docker exec <container> bash
. Então, você apenas abre uma concha dentro do contêiner.