Docker (Parte 1): Principais comandos para gerenciar seus containers

O objetivo desse artigo é mostrar um cheat sheet com exemplos de comandos usados no gerenciamento de containers Docker. Não apresentarei nenhum “case” dessa vez, quero apenas divulgar de forma simples os comandos e as explicações para ajudar as pessoas que estão iniciando com Docker. Vou mostrar até a parte de volumes em Docker, e nos próximos artigos irei abordar redes e um cluster com swarm.

Para começar, e para que você saia brincando com Docker, vamos iniciar com a instalação da ferramenta no sistema Ubuntu, é o ambiente que eu estou usando para instalar o Docker. Para isso, siga os passos abaixo:

  • Instalação do Docker no Linux Ubuntu

Acesse a documentação aqui para a instalação do Docker. Vou deixar um comando para facilitar do seu lado:

Agora vamos verificar a versão do Docker instalada:

  • A nova CLI do Docker

Antes dessa mudança tínhamos que usar, por exemplo,docker ps agora com a nova CLI ficou tudo “modelado”, acho que podemos dizer assim né!? Com a nova CLI, para listar os containers, usamos o comando docker container ls esse é apenas um exemplo de como ficou, outro exemplo é o docker run que agora mudou para docker container run

Para você entender o que mudou basta acessar o blog da Mandic, vale a leitura: Acesse aqui.

  • Fundamentos de administração de containers Docker

Vejamos alguns comandos que podemos utilizar na administração dos containers.

$ docker container ls (mostra os containers em execução).

$ docker container ls -a (mostra todos os containers, em execução, mortos, parados).

$ docker container run -ti hello-world (executa uma imagem hello-world com interatividade e conectado usando a opção -ti).

$ docker container attach (se conecta ao container).

$ docker container attach trusting_shamir (pode passar o nome do container ou o ID), e cai de novo dentro do container).

$ docker container exec -ti 18a58c41ebd1 ls / (executa um comando no container, nesse caso estou executando um ls no / do sistema)

$ docker container stop angry_babbage (stoppa meu container). Eu passei o nome do container ao invés do ID.

$docker container start angry_babbage (inicia novamente o container).

$ docker container restart angry_babbage (reinicia o container)

$ docker container inspect 18a58c41ebd1 (mostra os detalhes do container, redes, volumes, variáveis). Veja um exemplo de saída:

$ docker container pause 18a58c41ebd1 (pausa o container).

$ docker container unpause 18a58c41ebd (volta o estado do container).

$ docker container rm -f 18a58c41ebd1 (remove o container forçando com a opção -f).

$ docker container rm -f ee6 (podemos remover usando apenas as três letras iniciais do ID container que ele entende)

$ docker container stats 18a58c41ebd1 (mostra o uso de recursos consumidos pelo container)

  • Criando um Dockerfile

Vamos agora criar um diretório local com o nome de “dockerfile-teste”. Acesse esse diretório e crie o arquivo “Dockerfile”. Adicione o seguinte texto no arquivo de “Dockerfile”:

Agora vamos fazer o “build” desse “Dockerfile” que acabamos de criar:

Feito isso, vamos executar o container:

  • Volumes em Docker

Tudo que existe dentro de um container (aplicações, documentos, arquivos) depois que removemos esse container, tudo será perdido. Com o uso desse recurso podemos montar os volumes para persistir os dados do container.

Vamos aos exemplos:

Crie um diretório em /opt com o nome de “projeto-volume” no seu sistema local:

Agora vamos criar um container para exemplificar volumes bind. Siga o comando abaixo:

Efetuamos a criação de um container com volume do tipo bind. Agora vou criar um arquivo dentro de /projeto-teste no container usando o comando “touch” touch teste2.txt vou agora sair desse container e ir no diretório que criei anteriormente que é o /opt/projeto-volume e pode ver que o arquivo está aparecendo aqui também.

  • Para listar volumes, veja abaixo o comando:
  • Para criar volumes usando o comando:

Vamos usar o inspect para ver detalhes de volume:

Agora que sabemos o “mountpoint” do volume, podemos testar usando um container. Tudo que eu criar de dados dentro de /var/lib/docker/volumes/projetos/_data posso replicar em um container.

Veja o container de teste:

src: volumes-teste (nome do meu volume criado).
dst: diretório destino (nome do diretório de destino).

Vamos acessar o diretório “teste” que foi criado, feito o acesso podemos criar arquivos, diretórios e ver também que tudo que foi criado no “mountpoint” aparecerá aqui dentro desse diretório.

Podemos usar um comando que remove todos os volumes que não estão sendo usados por um container, que é o docker volume prune. Atenção que esse comando é perigoso, pode ser que você precise dos dados antes de remover o volume, então sempre é bom verificar que containers tem os dados antes de usar esse comando para deletar os volumes. Existe esse comando para container também, só para lembrar vocês. 😜

Isso é tudo pessoal, nos próximos artigos irei mostrar mais sobre Docker, fique de olho. #VAIIII

Senior Linux Administrator at IBM

Senior Linux Administrator at IBM