Docker Cheat Sheet: Guia de Referência com Comandos Básicos – Códigos Prontos para Usar

Docker é uma plataforma de código-aberto muito popular, utilizada para facilitar os processos de desenvolvimento, teste, lançamento e gerenciamento de aplicações em containers. A plataforma pode ser utilizada em ambientes consistentes, portáteis ou virtuais, como um Servidor Virtual Privado (VPS – Virtual Private Server).

Por ser uma importante ferramenta de um arsenal de recursos para o desenvolvimento de aplicações, aprender os diferentes comandos Docker pode consumir bastante tempo e esforço. Geralmente, os novos usuários tendem a trabalhar com uma “colinha” por perto, isto é, ter uma cheat sheet dos principais comandos Docker representa um benefício significativo para o desenvolvimento de seus projetos.

Neste tutorial, vamos explicar como o Docker funciona. Depois, vamos apresentar os principais comandos que os usuários utilizam nessa plataforma. Vamos lá!

Arquitetura da Plataforma Docker 

A arquitetura do Docker consiste em cinco principais componentes: servidor, cliente, container, imagem e registro.

Servidor Docker 

Um servidor (server) ou daemon Docker é um programa que roda no “plano de fundo” do seu computador ou máquina, e que faz o gerenciamento dos containers e imagens do Docker. Quando você usa a interface de linha de comando do Docker (CLI – command line interface) para criar, rodar ou gerenciar containers, está interagindo com o daemon Docker.

O servidor ou daemon é um componente essencial da plataforma Docker, garantindo que os containers poderão ser inicializados e pausados automaticamente quando o sistema é ligado.

Cliente Docker 

Um cliente (client) Docker permite que os usuários interajam com o daemon Docker através da interface de linha de comando (CLI). Simplificando, essa é a principal parte da arquitetura Docker para criar, gerenciar e rodar aplicações containers. Quando você utiliza o CLI Docker para rodar um comando, o cliente Docker envia o comando ao daemon Docker rodando em seu computador. Ele, então, realiza a operação solicitada. O cliente Docker pode pode ser instalado em qualquer dispositivo que precise interagir com o Docker daemon, incluindo sua máquina local, um servidor remoto ou um servidor virtual.

Container Docker

Um container Docker é um pacote que contém todos os pré-requisitos necessários para rodar uma aplicação. 

Containers são desenvolvidos para serem altamente portáteis, isso quer dizer que eles podem ser facilmente movidos de um ambiente para outro – por exemplo, do computador de um desenvolvedor para um ambiente de teste, ou de um ambiente de teste para um ambiente de produção.

Imagem Docker 

Uma imagem (image) Docker é um modelo pré-configurado que especifica o que deve ser incluído em um container Docker, ou seja, representa estaticamente as configurações do aplicativo desenvolvido. Uma imagem Docker contém o código da aplicação, bibliotecas, dependências e outros elementos necessários para que o produto seja executado. 

Geralmente, as imagens podem ser baixadas a partir de sites como o Docker Hub. De todo modo, também é possível criar uma imagem personalizada com a ajuda da ferramenta Dockerfile.

Registro Docker 

O registro (registry) Docker é um repositório central que armazena e faz a gestão de imagens. Trata-se de um sistema server-based que permite aos usuários armazenar e compartilhar imagens Docker com outros, facilitando a distribuição e o lançamento de aplicações. O registry mais notável do Docker é o Docker Hub.

Cheat Sheet: Guia de Comandos Docker

Agora que você já sabe como a plataforma Docker funciona, vamos conferir alguns dos exemplos de comandos Docker mais populares. 

Comandos de Construção

O Docker utiliza o comando “build” (construção) para criar imagens a partir de um arquivo Docker. Alguns dos comandos mais comuns dessa categoria incluem:

ComandoExplicação
docker buildConstrói uma imagem a partir de um Dockerfile (arquivo Docker) no diretório atual 
docker build https://github.com/docker/rootfs.git#container:dockerConstrói uma imagem a partir de um repositório GIT remoto 
docker build -t imagename/tagConstrói e identifica uma imagem, identificando-a com uma tag, para facilitar o monitoramento
docker build https://yourserver/file.tar.gzConstrói uma imagem a partir de um arquivo tar remoto 
docker build -t image:1.0-<<EOFFROM busyboxRUN echo “hello world”EOFConstrói uma imagem a partir de um Dockerfile (arquivo Docker) que é enviado via STDIN

Comandos de Limpeza 

Limpar ou remover imagens, containers e volumes não utilizados é uma ótima maneira de economizar espaço em disco e manter seu sistema limpo e bem organizado. Confira abaixo alguns exemplos do comando de natureza “clean up”:

ComandoExplicação
docker image pruneRemove uma imagem que não está sendo utilizada
docker image prune -aRemove todas as imagens que não estão sendo usadas por containers
docker system pruneRemove todos os containers pausados (stopped containers), todo o cache de construção (build cache), todas as redes (networks) não utilizadas por containers e todas as imagens sem tags (dangling images)
docker image rm imageRemove uma imagem
docker rm containerRemove um container que está rodando
docker kill $ (docker ps -q)Pausa todos os containers que estão rodando
docker swarm leaveSai do modo swarm
docker stack rm stacknameRemove um swarm
docker volume rm $(docker volume ls -f dangling=true -q)Remove todos os volumes sem tags (dangling volumes)
docker rm $(docker ps -a -q)Remove todos os containers pausados

Comandos de Interação com Container

Interaja com seu container Docker através dos comandos mais populares, como:

ComandoExplicação
docker start containerInicia um novo container
docker stop containerEncerra (stop) um container
docker pause containerPausa um container
docker unpause containerEncerra a pausa de um container
docker restart containerReinicia um container
docker wait containerBloqueia um container
docker export containerExporta conteúdos de um container para um arquivo tar 
docker attach containerAnexa conteúdo a um container que já está rodando (running container)
docker wait containerColoca processo em aguardo até que o container esteja terminado e enem exibe o exit code (código de saída)
docker commit -m “commit message” -a “author” container username/image_name: tagSalva um container que está rodando em formato de imagem
docker logs -ft containerAcompanha logs de um container (registros)
docker exec -ti container script.shRoda um comando em um container
docker commit container imageCria uma nova imagem a partir de um container
docker create imageCria um novo container a partir de uma imagem

Comandos de Inspeção de Container 

Às vezes, você pode precisar inspecionar (inspect) seus containers para garantir a qualidade ou para resolver alguma falha. Os comandos indicados abaixo te ajudam a entender melhor o que diferentes containers estão rodando:

ComandoExplicação
docker psLista todos os containers que estão rodando (running containers)
docker -ps -aLista todos os containers
docker diff containerInspeciona alterações em diretórios e arquivos do sistema de arquivos do container
docker top containerExibe todos os processos que estão rodando em um container ativo
docker inspect containerExibe informações básicas (low-level information) sobre um container
docker logs containerReúne os registros (logs) de um container
docker stats containerExibe as estatísticas de consumo de recursos de um container 

Comandos de Gerenciamento de Imagens 

Alguns dos comandos mais populares para administrar Docker images incluem:

ComandoExplicação
docker image lsLista imagens
docker image rm mysqlRemove uma imagem
docker tag image tagRotula uma imagem (insere tag)
docker history imageExibe o histórico de uma imagem
docker inspect imageExibe informações básicas (low-level information) de uma imagem

Comandos “Run”

A plataforma Docker utiliza o comando run (rodar) para criar containers a partir de imagens Docker. A sintaxe padrão para comandos dessa natureza está indicada abaixo:

docker run (options) image (command) (arg…)

Depois da sintaxe padrão, utilize uma das seguintes flags para rodar o comando:

FlagExplicação
–detach , -dRoda um container no plano de fundo (background) e imprime a ID do container 
–env , -eDefine variáveis de ambiente 
–hostname , -hConfigura um hostname para um container
–label , -lCria uma etiqueta (label) de metadados para um container
–nameAtribui um nome a um container
–networkConecta um container a uma rede (network)
–rmRemove um container quando ele é encerrado
–read-onlyDefine o modo de “apenas leitura” para o sistema de arquivos do container (filesystem read-only)
–workdir , -wConfigura um diretório de trabalho em um container

Comandos de Registro

Caso você precise interagir com o Docker Hub, use alguns dos seguintes comandos:

ComandoExplicação
docker loginFaz o login em um registro
docker logoutFaz o logout de um registry
docker pull mysqlTraz ou busca uma imagem de um registro (pull)
docker push repo/ rhel-httpd:latestEnvia ou leva uma imagem a um registry (push)
docker search termFaz uma pesquisa no Docker Hub em busca de imagens com o termo especificado (term)

Comandos de Serviço

Gerencie todos os serviços Docker com apenas alguns desses comandos básicos:

ComandoExplicação
docker service lsLista todos os serviços que estão rodando em um swarm
docker stack services stacknameLista todos os serviços que estão rodando
docker service ps servicenameLista a tarefa (task) de um serviço
docker service update servicenameAtualiza um serviço
docker service create imageCria um novo serviço
docker service scale servicename=10Dimensiona um ou mais serviços replicados
docker service logs stackname servicenameLista todos os registros (logs) de serviços

Comandos de Rede

Se você precisa interagir com a rede Docker, pode utilizar um comando de natureza “network”, como os apresentados a seguir:

ComandoExplicação
docker network create networknameCria uma nova rede (new network)
docker network rm networknameRemove uma rede específica
docker network lsLista todas as redes
docker network connect networkname containerConecta um container a uma rede
docker network disconnect networkname containerDesconecta um container de uma rede
docker network inspect networknameExibe informações detalhadas sobre a rede (network)

Conclusão

O Docker é uma excelente ferramenta para qualquer usuário que deseja usar containers. A curva de aprendizado inicial pode ser mais difícil caso você não tenha familiaridade com desenvolvimento baseado em container. Felizmente, ter um guia – como esta cheat sheet – em mãos pode acelerar consideravelmente esse processo. Isso porque todos os comandos mais populares estarão facilmente ao seu alcance, sem que você precise pesquisar cada um individualmente em fóruns ou extensas documentações na internet. 

Neste guia, apresentamos os elementos básicos da infraestrutura do Docker e, depois, listamos alguns dos mais populares comandos Docker básicos.

Esperamos que este tutorial sobre Docker tenha sido útil para você. Caso ainda tenha alguma questão, deixe um comentário com sua dúvida na seção abaixo.

Author
O autor

Bruna B. Barro

Bruna é formada em relações internacionais pela UFSC e atualmente faz mestrado em sociologia pela UFRJ. Determinada em tornar o conhecimento sobre tecnologia acessível a todas as pessoas, atua como tradutora e redatora freelancer na Hostinger. Tem experiência com tradução, localização, copywriting, gerenciamento de projetos, atendimento ao cliente e escrita acadêmica. No seu tempo livre gosta de assistir séries, cozinhar e jogar jogos de lógica.