Curso
Os 18 principais comandos do Docker para criar, executar e gerenciar contêineres
O Docker se tornou uma ferramenta essencial para desenvolvedores e profissionais de dados que precisam criar, compartilhar e executar aplicativos de forma consistente em vários ambientes. Quer você esteja criando contêineres para desenvolvimento local ou implantando microsserviços na produção, é essencial dominar os comandos do Docker.
Neste guia, mostrarei a você 18 comandos essenciais do Docker - abrangendo imagens, contêineres, redes, volumes e Compose - que aumentarão seu fluxo de trabalho e tornarão o trabalho com o Docker mais fácil e eficiente.
O que é o Docker?
O Docker é uma plataformapara desenvolvimento, envio e execução de aplicativos. Ele permite que você separe seu aplicativo da infraestrutura subjacente, possibilitando um fornecimento mais rápido de software e gerenciando sua configuração da mesma forma que gerencia seus aplicativos.
O Docker executa aplicativos em ambientes isolados usando pacotes leves chamados contêineres, que incluem tudo o que um aplicativo precisa para ser executado, como dependências e instalações, ajudando você a economizar recursos do sistema. Podemos facilmente compartilhar contêineres com colegas de equipe, executar vários simultaneamente e gerenciar todos eles usando as ferramentas e a plataforma do Docker.
Podemos usar o Docker para muitas coisas, incluindo:
- Implementação e dimensionamento responsivos.
- Executar mais cargas de trabalho no mesmo hardware.
- Entrega rápida e consistente de aplicativos.
Ao usar o Docker, trabalhamos com diferentes objetos do Docker, como imagens, contêineres, redes, plug-ins e volumes. Eles formam os blocos de construção da configuração do Docker. Por trás disso, o Docker usa recursos do kernel do Linux para fazer tudo isso funcionar. Interagimos com ele usando comandos simples no terminal, e todo comando do Docker começa com docker
.
> Se você está apenas começando, ao curso Introdução ao Docker oferece uma base prática para você aprender os fundamentos da conteinerização.
Comandos básicos do Docker
Agora que já falamos sobre o que é o Docker e como ele funciona, vamos dar uma olhada em alguns dos comandos mais comuns. Eles ajudarão você a criar, executar e gerenciar contêineres no seu fluxo de trabalho diário.
docker --version e docker info
Nos comandos do Docker, qualquer coisa que comece com --
é chamada de flag.
Por exemplo, --version
é um sinalizador que mostra a versão da CLI do Docker que você está usando. Você também pode usar docker version
(sem o sinalizador) para obter informações detalhadas sobre a versão de todos os componentes do Docker.
A saída é dividida em duas partes:
- Cliente mostra informações sobre a CLI do Docker e ferramentas relacionadas.
- Servidor mostra detalhes sobre o Docker Engine e em que ele é executado.
Você também pode formatar essa saída usando o sinalizador --format
com um modelo personalizado.
O comando docker info
oferece a você uma visão geral completa da sua configuração do Docker. É o mesmo que executar o docker system info
, mas com um nome mais curto. Você verá detalhes como a versão do kernel, o número de contêineres e imagens e outros detalhes de todo o sistema.
Dependendo do driver de armazenamento, você também poderá ver informações como nomes de pool e arquivos de dados. Assim como em docker version
, você pode formatar a saída usando --format
ou -f
.
docker pull <imagem>
O comando pull faz o download de uma imagem do Docker de um registro, geralmente o Docker Hub, uma biblioteca pública de imagens pré-criadas que você pode usar sem precisar configurar nada. Você pode executá-lo como docker pull
ou docker pull
, e ambos farão a mesma coisa.
- A sintaxe completa é a seguinte:
docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
Se você não especificar uma tag, o Docker usará :latest
por padrão. Por exemplo: docker image pull debian
extrai a imagem debian:latest
.
Você também pode adicionar opções após o comando para personalizar a forma como a imagem é extraída, como limitar a largura de banda ou ignorar a verificação da imagem. A imagem abaixo mostra todas as opções disponíveis e suas funções.
Opções para o comando docker pull. Source: Documentos do Docker
docker run <imagem>
O comando docker run
cria e inicia um novo contêiner a partir de uma imagem especificada, o que significa que ele executa a imagem em um novo contêiner. É uma abreviação de docker container run
, e ambos funcionam da mesma maneira.
- Aqui está a sintaxe básica:
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
Se você já executou um contêiner e deseja iniciá-lo novamente com todas as alterações anteriores, use: docker start
.
O comando run vem com várias opções para você personalizar a execução do seu contêiner. Veremos algumas das mais comuns com exemplos:
Bandeira |
Exemplo de comando |
Descrição |
|
|
O identificador personalizado especificado para o contêiner denominado test usando a imagem |
|
|
Executa o comando executado dentro do diretório especificado, neste exemplo, |
|
|
Por padrão, todos os contêineres têm o namespace PID ativado, o que permite a separação dos processos. O exemplo executa um contêiner alpino com a opção |
|
|
Isso cria um contêiner e imprime um teste no console O sinalizador |
docker stop <container> e docker start <container>:
O comando docker start
inicia um ou mais contêineres parados. Por exemplo, em docker start my_container
, my_container
é o nome do contêiner que queremos iniciar. Também podemos usar seu alias: docker container start
.
- Sua sintaxe completa é:
docker container start [OPTIONS] CONTAINER [CONTAINER...]
Da mesma forma, docker stop
interrompe um ou mais contêineres em execução. Por exemplo, em docker stop my_container
, my_container
é o nome de um contêiner em execução.
Ele também tem um alias: docker container stop
.
- Sua sintaxe completa é a seguinte:
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
Assim como o start
, o comando stop
tem opções para personalizar a forma como os contêineres são interrompidos. A seguir, destacaremos alguns úteis:
Opções para docker stop
. Fonte: Documentos do Docker
Domine o Docker e o Kubernetes
Trabalhando com imagens do Docker
As imagens são a base de todo contêiner. Nesta seção, veremos como criar, gerenciar e inspecionar imagens do Docker usando seus comandos comuns.
construção de docas
O comando docker build
é um dos recursos mais usados do Docker. Embora ele faça parte de um ecossistema mais amplo que oferece suporte a casos de uso avançados, vamos nos concentrar em como usá-lo para criar uma imagem a partir de um simples Dockerfile.
Um Dockerfile
é um arquivo de texto simples (sem extensão de arquivo) que contém instruções passo a passo que o Docker usa para criar uma imagem. Veja como você pode criar um:
- No diretório raiz do seu aplicativo, crie um arquivo chamado
Dockerfile
com o seguinte conteúdo:
# syntax=docker/dockerfile:1
FROM node:lts-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
Esse Dockerfile começa com uma imagem de base leve que inclui o Node.js e o Yarn. Ele copia o código-fonte do seu aplicativo para a imagem, instala as dependências e define como iniciar o aplicativo.
- Agora, crie a imagem usando o seguinte comando:
docker build -t getting-started.
O sinalizador -t
permite que você marque a imagem. Nesse caso, nós o nomeamos getting-started.
. O .
no final diz ao Docker para procurar o Dockerfile no diretório atual.
imagens do docker
O comando docker images
lista todas as imagens de nível superior, o repositório, as tags e o tamanho delas. Você também pode usar seus aliases:
docker image list
docker image ls
Sua sintaxe é: docker image ls [OPTIONS] [REPOSITORY[:TAG]]
Esse comando oferece suporte a várias opções. Por exemplo, para mostrar todas as imagens, inclusive as intermediárias, você pode adicionar o sinalizador -a
ou --all
da seguinte forma: docker images -a
.
docker rmi <imagem>
O comando docker rmi
remove uma ou mais imagens do seu sistema. Se uma imagem tiver várias tags, a execução desse comando com uma tag específica removerá apenas essa tag. Mas se a tag for o único link para a imagem, tanto a tag quanto a imagem serão removidas.
Você também pode usar um desses aliases:
docker image remove
docker image rm
Sua sintaxe é: docker image rm [OPTIONS] IMAGE [IMAGE...]
Se precisar remover uma imagem que ainda esteja sendo usada por um contêiner em execução, você precisará forçá-la adicionando a opção -f
ou --force
.
Gerenciamento de contêineres do Docker
Muitas vezes, precisamos gerenciar contêineres, iniciando, parando, inspecionando ou removendo-os à medida que nosso aplicativo evolui. Portanto, mostrarei a você os comandos mais úteis do Docker para lidar com contêineres no seu fluxo de trabalho diário.
docker exec <contêiner> <comando>
O comando docker exec
permite que você execute um comando dentro de um contêiner em execução sem reiniciá-lo. É especialmente útil para depurar ou verificar algo manualmente dentro do contêiner. Você também pode usar seu alias: docker container exec
.
O comando só funciona se o processo principal do contêiner (PID 1) estiver em execução. Ele não é executado novamente de forma automática se o contêiner for reiniciado.
Sua sintaxe é: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Há vários sinalizadores opcionais que você pode usar com isso. Por exemplo, --privileged
concede ao comando permissões estendidas dentro do contêiner. Para obter a lista completa de íons opt, consulte a documentação oficial.
Aqui está um exemplo para executar um comando no contêiner:
docker exec -d mycontainer touch /tmp/execWorks
O comando touch
cria um novo arquivo /tmp/execWorks
dentro do contêiner em execução mycontainer
, em segundo plano.
Registros de docas <contêiner>
O comando docker logs
permite que você visualize os logs de um contêiner específico e mostre tudo o que foi impresso na saída padrão e no erro no momento da execução. Você também pode usar seu alias: docker container logs
Sua sintaxe é: docker container logs [OPTIONS] CONTAINER
Há várias opções úteis que você pode adicionar. Por exemplo:
--details
mostra atributos extras, como variáveis de ambiente e rótulos.--until
permite que você busque logs até um ponto específico no tempo.docker logs -f --until=2s test
segue a saída de log do contêinertest
e para depois de mostrar os últimos dois segundos de logs.
Aqui estão todas as opções que você pode usar com docker logs
:
Opções para docker log
. Portanto,urce: Documentos do Docker
docker rm <contêiner>
O comando docker rm
remove um ou mais contêineres do seu sistema. Você também pode usar seus aliases:
docker container remove
docker container rm
Sua sintaxe é: docker container rm [OPTIONS] CONTAINER [CONTAINER...]
Esse comando tem alguns sinalizadores opcionais que você pode usar. Aqui estão alguns deles:
Opções para docker rm
. Fontee: Documentos do Docker
Por exemplo, você pode usar docker rm /redis
para remover o contêiner identificado pelo link /redis
. No entanto, observe que esse comando remove apenas os contêineres em execução.
Se quiser remover contêineres parados, você precisará usar docker container prune
. Para manter seu ambiente limpo, saiba como remover com segurança os recursos não utilizados do Docker com este tutorial do Docker prune.
reiniciar o docker <contêiner>
O comando docker restart
interrompe e reinicia um ou mais contêineres. Você também pode usar seu alias: docker container restart
.
Sua sintaxe é: docker restart [OPTIONS] CONTAINER [CONTAINER...]
O comando restart tem várias opções úteis para personalizar as reinicializações de contêineres. Abaixo você encontra as duas opções, juntamente com exemplos.
Opção |
Descrição |
Exemplo |
-s, --signal |
Sinal a ser enviado ao contêiner. |
|
-t, --timeout |
Segundos de espera antes de matar o contêiner. |
|
> Para praticar, explore asestas ideias de projetos do Docker que você pode usar desde o nível iniciante até o avançado.
Rede Docker
A rede de contêineres permite a comunicação entre contêineres e cargas de trabalho externas. Por padrão, os contêineres têm a rede ativada e podem fazer conexões de saída, mas não sabem automaticamente em que tipo de rede estão ou a que outras cargas de trabalho estão conectados.
A menos que você use o driver de rede none
(que desativa a rede), os contêineres podem interagir com elementos de rede como endereços IP, gateways e DNS.
Vamos explorar alguns comandos comuns de rede do docker que você pode usar.
docker network ls
O comando docker network ls
lista todas as redes conhecidas pelo Docker Engine, inclusive aquelas em vários hosts em um cluster. Seu alias é: docker network list
.
- Aqui está a sintaxe:
docker network ls [OPTIONS]
Você pode usar várias opções com isso, conforme mostrado na imagem abaixo:
Por padrão, esse comando mostra os dados de cada rede:
- ID
- Nome
- Motorista
- Escopo
Você pode usar sinalizadores para personalizar a saída. Por exemplo, o sinalizador --no-trunc
mostra as IDs de rede completas em vez das encurtadas. Veja como você usa esse comando:
docker network ls --no-trunc
docker network create <nome da rede>
O comando docker network create
cria uma nova rede do Docker. Por padrão, ele usa o driver bridge
, a menos que você especifique outro usando o sinalizador --driver
(ou -d
).
O Docker oferece suporte a drivers de rede integrados, como:
bridge
para redes de host único.overlay
para redes com vários hosts no modo Swarm.
Você também pode usar drivers de terceiros ou personalizados, se necessário.
- Aqui está a sintaxe básica:
docker network create [OPTIONS] NETWORK
O comando oferece muitas opções para várias finalidades. Consulte a documentação oficial para ver a lista completa de opções.
Aqui está um exemplo de criação de uma rede em ponte:
docker network create -d bridge my-bridge-network
As redes Bridge são limitadas a um único Docker Engine para que não conectem contêineres em hosts diferentes.
Quando o modo Swarm estiver ativado, você poderá criar uma rede que abranja vários hosts do Docker:
docker network create --scope=swarm --attachable -d overlay my-multihost-network
> Você está curioso para saber como o Docker se compara ao Kubernetes? Este detalhamento do Kubernetes vs. Dockerabrange as principais diferenças e casos de uso.
Volumes do Docker
Os volumes do Docker são usados para armazenar dados que precisam ser mantidos, mesmo quando um contêiner para ou é removido. Você pode criá-los explicitamente ou permitir que o Docker os crie automaticamente ao iniciar um contêiner.
Os volumes são armazenados no sistema host, mas são isolados dos arquivos principais do host. Eles são montados em contêineres de forma semelhante aos bind mounts, mas com melhor portabilidade e segurança.
Vamos explorar alguns comandos relevantes do docker volume:
docker volume ls
O comando docker volume ls
lista todos os volumes que o Docker conhece. Você também pode usar seu alias: docker volume list
.
- Sua sintaxe é:
docker volume ls [OPTIONS]
Esse comando oferece suporte a alguns sinalizadores opcionais para ajudar você a filtrar ou formatar a saída - veja quais são eles:
Opções para o comando docker volume ls
. Source: Documentos do Docker
docker volume create <nome do volume>
O comando docker volume create
cria um novo volume para armazenar dados persistentes. Se você não fornecer um nome, o Docker gerará um automaticamente para você.
A criação de volumes é uma etapa comum quando você deseja que os dados persistam além da vida útil de um único contêiner.
- Aqui está a sintaxe:
docker volume create [OPTIONS] [VOLUME_NAME]
Vamos ver um exemplo de criação de um volume e, em seguida, configurar um contêiner para usá-lo:
docker volume create hello
docker run -d -v hello:/world busybox ls /world
Neste exemplo, é criado um volume chamado hello
. Em seguida, ele é montado em um contêiner no caminho /world
. Isso permite que o contêiner grave ou leia dados desse volume.
Vários contêineres podem usar o mesmo volume, o que é útil se um contêiner precisar gravar dados enquanto outro os lê.
Observação: Os nomes dos volumes devem ser exclusivos entre os drivers. Você não pode usar o mesmo nome de volume em dois drivers de armazenamento diferentes.
Comandos do Docker Compose
O Docker Compose facilita o gerenciamento de aplicativos com vários contêineres usando um simples arquivo YAML. Ele suporta diferentes ambientes, como desenvolvimento, teste, preparação, produção e CI. Com um comando, você pode controlar serviços, configurar redes e gerenciar volumes, tudo em um só lugar.
Vamos explorar alguns comandos comuns de composição:
docker-compose up
O comando docker compose up
constrói, (re)cria, inicia e anexa contêineres para um serviço. Se os contêineres ainda não estiverem em execução, ele também iniciará automaticamente todos os serviços vinculados.
- Aqui está a sintaxe:
docker compose up [OPTIONS] [SERVICE...]
Por padrão, esse comando combina a saída de todos os contêineres. Se quiser se concentrar em serviços específicos, você pode:
- Use o sinalizador
--attach
para anexar a determinados serviços - Use o sinalizador
--no-attach
para excluir outras pessoas
Por exemplo, docker compose up --no-attach
inicia todos os serviços, exceto o que você excluiu dos registros.
Quando o comando termina, os contêineres também param. Para mantê-los em execução em segundo plano, use o sinalizador --detach
:
docker compose up --detach
Antes de executar esse comando, certifique-se de que você tenha navegado (cd
) para o diretório em que o arquivo docker-compose.yml
está localizado.
docker-compose down
O comando docker compose down
interrompe os contêineres e remove contêineres, imagens, redes e volumes criados por docker compose up
.
- Sua sintaxe é:
docker compose down [OPTIONS] [SERVICES]
Você pode usar várias opções com ele, incluindo as seguintes:
Opções para o comando docker compose down
. Fonte: Documentos do Docker.
Por padrão, o comando remove o seguinte:
- Contêineres para serviços definidos no arquivo Compose.
- Redes definidas na seção de redes do arquivo Compose.
- A rede padrão, se for usada.
Os seguintes itens não são removidos por padrão:
- Redes e volumes definidos como externos.
- Volumes anônimos, ou seja, os volumes que não têm um nome.
Os volumes anônimos não são montados automaticamente quando você executa docker compose up
novamente porque eles não têm nomes. Se você precisar de armazenamento persistente de dados, é melhor usar volumes nomeados ou montagens de ligação.
Práticas recomendadas para usar os comandos do Docker
O Docker é uma maneira eficiente de criar, enviar e executar aplicativos em contêineres. Mas para usá-lo bem e garantir que sua configuração seja eficiente e fácil de dimensionar, você deve seguir algumas práticas recomendadas.
Use volumes do Docker para dados persistentes
Por padrão, os arquivos do contêiner são armazenados em uma camada gravável que é perdida quando o contêiner é removido! Essa camada é exclusiva de cada contêiner e não é facilmente acessível. O Docker usa diferentes tipos de montagens para manter os dados, um dos quais são os volumes, gerenciados pelo daemon do Docker e armazenados no host.
Os volumes nos permitem:
- Mantenha os dados mesmo depois que um contêiner for excluído.
- Armazene dados críticos para o desempenho com velocidade no nível do host.
- Gerencie o armazenamento facilmente por meio do Docker.
Eles são ideais para dados de longo prazo ou quando vários contêineres precisam compartilhar o acesso. Lembre-se de que, se você precisar acessar arquivos diretamente do host, as montagens bind podem ser mais adequadas, pois os volumes são gerenciados inteiramente pelo Docker.
Automatize com o Docker Compose
O gerenciamento manual de vários contêineres pode se tornar uma tarefa árdua. O Docker Compose simplifica as coisas, permitindo que você defina tudo em um único arquivo YAML para que possa se concentrar na criação.
Veja por que essa é uma prática recomendada que vale a pena seguir:
- Um simples comando: Inicie, pare, dimensione ou reconstrua seus serviços de uma só vez.
- Consistência para todos: Independentemente de você estar trabalhando em desenvolvimento, teste ou produção, o Compose mantém os ambientes alinhados para que você não fique preso a problemas do tipo "isso funciona na minha máquina".
- Rede integrada: O Compose cria uma rede compartilhada para que seus serviços possam se comunicar facilmente usando nomes de serviços em vez de IPs.
- Fácil dimensionamento: Você pode aumentar ou diminuir rapidamente os serviços com o sinalizador
--scale
, o que é ótimo para testar como o aplicativo lida com cargas diferentes. - Configuração clara e colaborativa: Toda a sua configuração, incluindo contêineres, redes e volumes, é controlada por versão e pode ser lida.
Conclusão
No início, o Docker pode parecer muito complicado, mas quando você pega o jeito dos comandos principais, ele abre muitas possibilidades. Desde a execução do seu primeiro contêiner até o gerenciamento de redes, volumes e serviços, agora você está mais bem equipado para criar e executar aplicativos em contêineres com confiança.
E se você quiser continuar aprendendo, aqui estão alguns recursos excelentes para explorar em seguida:
- Conceitos de virtualização e contêineres - um curso perfeito para você construir sua base conceitual.
- Introdução ao Docker - um curso amigável para iniciantes para você começar.
- Docker intermediário - curso para quando você estiver pronto para se aprofundar.
- Containerização e virtualização com Docker e Kubernetes - trilha de habilidades para você expandir para o Kubernetes e a orquestração no mundo real.
Domine o Docker e o Kubernetes
Perguntas frequentes
Quais são os comandos do Docker mais usados?
Alguns dos comandos mais comuns do Docker incluem docker run
, docker ps
, docker build
, docker pull
e docker-compose up
.
Como os volumes do Docker diferem dos bind mounts?
Os volumes do Docker são gerenciados pelo Docker e são ideais para portabilidade e persistência de dados, enquanto os bind mounts vinculam-se a um caminho de arquivo específico no sistema host.
Posso executar vários contêineres com um único comando?
Sim, o uso do docker-compose up
com um arquivo docker-compose.yml
permite que você execute vários serviços simultaneamente.
Qual é a diferença entre docker start e docker run?
docker run
cria e inicia um novo contêiner, enquanto docker start
reinicia um contêiner existente e parado.
Como faço para listar todos os contêineres parados?
Use docker ps -a
para ver todos os contêineres, inclusive os que estão parados.
Qual é a finalidade do comando docker exec?
Ele permite que você execute comandos dentro de um contêiner em execução, geralmente usado para depuração ou verificações manuais.
O Docker é apenas para sistemas baseados em Linux?
Não, o Docker também é compatível com o macOS e o Windows, usando máquinas virtuais leves para permitir a conteinerização.
O que o comando docker-compose down faz?
Ele interrompe e remove contêineres, redes e volumes criados por docker-compose up
.
Como faço para remover imagens pendentes do Docker?
Execute o site docker image prune
para limpar as imagens não utilizadas e liberar espaço em disco.
O Docker pode ser usado em ambientes de produção?
Com certeza. O Docker é amplamente usado na produção para implantar aplicativos escaláveis e reproduzíveis em configurações na nuvem e no local.
Sou um estrategista de conteúdo que adora simplificar tópicos complexos. Ajudei empresas como Splunk, Hackernoon e Tiiny Host a criar conteúdo envolvente e informativo para seus públicos.
Saiba mais sobre o Docker com estes cursos!
Curso
Intermediate Docker
Programa
Containerization and Virtualization

blog
O guia completo da certificação Docker (DCA) para 2024
blog
As 10 principais ferramentas de ciência de dados a serem usadas em 2024

Tutorial
Como instalar e configurar o MySQL no Docker
Tutorial
Como escrever um script Bash: um tutorial simples de scripts Bash
Tutorial
Tutorial do GitHub e do Git para iniciantes
Tutorial
Introdução aos acionadores SQL: Um guia para desenvolvedores

Oluseye Jeremiah
13 min