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 :) .