Como acessar o shell de um container em execução no Docker

Shell é poder. E qualquer um que use linha de comando no seu dia a dia ( algo que eu nunca entendi foram pessoas curtirem interfaces gráficas ) sabe que não há nada mais poderoso e prático que isto.

E mesmo em containers isto pode ser uma ajuda. Ou seja, ter um shell em um container é praticamente ter um shell em uma máquina comum ( ou virtualizada, lógico ).

O primeiro passo é usar o comando docker ps ou docker ps -a para pegar os containers atualmente em funcionamento na máquina.

docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1207217df33 memcached "docker-entrypoint..." 23 hours ago Up 22 hours 11211/tcp memcache01

Feito isto, você pode agora chamar o shell do container de sua preferência. Como temos somente um, você pega a última coluna da saída do comando e utiliza logo após o argumento -t :

$ docker exec -i -t memcache01 /bin/bash

E também é possível usar o id do container que é a primeira coluna da saída do comando docker ps :

$ docker exec -i -t d1207217df33 /bin/bash

A grande vantagem de usar este comando é que ao contrário do*“attach”*, caso você esteja acessando uma instância em que o comando inicial não foi um shell, você pode dar de cara com um shell *congelado*, onde você não tem como interagir.

Portanto, para evitar tristeza e desolação, use o comando acima :) .

comments powered by Disqus