Docker - contêineres e conchas
Por padrão, ao iniciar um contêiner, você também usará um shell commandao iniciar o contêiner, conforme mostrado abaixo. Isso é o que vimos nos capítulos anteriores, quando estávamos trabalhando com contêineres.
Na imagem acima, você pode observar que emitimos o seguinte comando -
sudo docker run –it centos /bin/bash
Usamos esse comando para criar um novo contêiner e, em seguida, usamos o comando Ctrl + P + Q para sair do contêiner. Isso garante que o contêiner ainda exista mesmo depois de sairmos dele.
Podemos verificar se o contêiner ainda existe com o Docker pscomando. Se tivéssemos que sair diretamente do contêiner, o próprio contêiner seria destruído.
Agora existe uma maneira mais fácil de anexar aos contêineres e sair deles de forma limpa, sem a necessidade de destruí-los. Uma maneira de conseguir isso é usando onsenter comando.
Antes de executarmos o nsenter comando, você precisa primeiro instalar o nsenterimagem. Isso pode ser feito usando o seguinte comando -
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
Antes de usarmos o nsenter , precisamos obter o ID do processo do contêiner, porque isso é exigido pelo nsentercomando. Podemos obter o ID do processo por meio do Dockerinspect command e filtrando-o através do Pid.
Como pode ser visto na imagem acima, primeiro usamos o docker pscomando para ver os contêineres em execução. Podemos ver que há um contêiner em execução com o ID ef42a4c5e663.
Em seguida, usamos o Docker inspect comando para inspecionar a configuração deste contêiner e, em seguida, use o grepcomando apenas para filtrar o ID do processo. E pela saída, podemos ver que o ID do processo é 2978.
Agora que temos o ID do processo, podemos prosseguir e usar o nsenter comando para anexar ao contêiner Docker.
nsenter
Este método permite anexar a um contêiner sem sair do contêiner.
Sintaxe
Comando nsenter –m –u –n –p –i –t containerID
Opções
-u é usado para mencionar o Uts namespace
-m é usado para mencionar o mount namespace
-n é usado para mencionar o network namespace
-p é usado para mencionar o process namespace
-i s para fazer o contêiner ser executado no modo interativo.
-t é usado para conectar os fluxos de E / S do contêiner ao sistema operacional host.
containerID - Este é o ID do contêiner.
Command - Este é o comando a ser executado dentro do contêiner.
Valor de retorno
Nenhum
Exemplo
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
Resultado
A partir da saída, podemos observar os seguintes pontos -
O prompt muda para o bash shell diretamente quando emitimos o nsenter comando.
Em seguida, emitimos o exitcomando. Agora, normalmente, se você não usou onsentercomando, o contêiner seria destruído. Mas você notaria que quando executamos onsenter comando, o contêiner ainda está instalado e funcionando.