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.