Isso me salvou mais vezes do que eu posso contar, podendo depurar um container em execução do jeito que você faria em uma VM “normal”.
Primeiro, veja quais containers estão em execução:
$ docker ps CONTAINER ID IMAGE COMMAND [...] NAMES 925cc10d55df 66cc85c3f275 "gitlab-runner-ser..." [...] runner-f500bed1-project-3888560-concurrent-0-mysql-0-wait-for-service 0ab431ea0bcf 3e3878acd190 "docker-entrypoint..." [...] runner-f500bed1-project-3888560-concurrent-0-mysql-0 4d9de6c0fba1 nginx:alpine "nginx -g 'daemon ..." [...] nginx-container
Para obter um Shell (Bash) em um container de escolha, execute isso:
$ docker exec -i -t nginx-container /bin/bash
O nginx-container determina qual container você deseja inserir. É o nome na última coluna da saída docker ps.
Alternativamente, use a ID do container:
$ docker exec -i -t 4d9de6c0fba1 /bin/bash
Não use o docker attach, pois isso lhe dará resultados diferentes se o comando inicial que começou em um container Docker for algo como o MongoDB ou Redis, a instância será morta.
***
Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/get-shell-running-docker-container/