Formação AWS

← Todos os artigos

Comandos Docker essenciais: run, ps, stop, exec, logs e mais

ContainersPor Henrylle Maia · 15 out 2026 · 8 min de leitura

Quem começa com container esbarra sempre nos mesmos oito comandos: docker run, docker ps, docker stop e start, docker pull, docker exec, docker volume, docker inspect e docker logs. Abaixo está cada um, com um exemplo que você reproduz na sua máquina e o que ele faz.

A aula é de 4 de janeiro de 2022 e usa a imagem httpd (Apache) servindo uma página estática. Os comandos são básicos e continuam valendo, mas confira as opções de cada um na referência oficial da CLI do Docker. Aqui eu não explico o que é Docker: para isso, veja O que é Docker.

Comando 1: docker run, para executar a imagem

O docker run pega a imagem, cria o container e executa. No exemplo, a imagem é a httpd:2.4, do Docker Hub. Como é uma imagem pública, não precisa de autenticação.

bash
docker run -d --rm --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

Cada argumento tem um papel:

  • -d: modo daemon. O container roda em segundo plano e o terminal só devolve o ID dele.
  • --rm: quando você parar o container, o Docker o descarta.
  • --name my-apache-app: o nome que identifica o container, útil nos próximos comandos.
  • -p 8080:80: a porta 80 do container, onde o Apache responde, sai na porta 8080 do host.
  • -v "$PWD":/usr/local/apache2/htdocs/: compartilha a pasta atual do host com a raiz do Apache. Na pasta eu tinha um index.html.

Abri localhost:8080/index.html e apareceu a página. Como a pasta é compartilhada, editei o arquivo na minha máquina e a página mudou na hora. Criei um index2.html e ele também passou a abrir. Essa é a vantagem do volume. Para ver o assunto a fundo, leia Volume no Docker.

Comando 2: docker ps, para listar os containers

Como saber o que está rodando na máquina?

bash
docker ps

A lista traz o ID do container (basta uma parte dele para localizá-lo), a imagem, o comando, quando foi criado, o status, a porta roteada e o nome. O nome é o que mais ajuda, porque vários comandos aceitam ele no lugar do ID.

Para ver também os containers parados:

bash
docker ps -a

Na minha máquina apareceu uma fila de containers parados de semanas atrás, além do que acabava de subir.

Comando 3: docker stop e docker start, para parar e ligar

Para parar, passe o nome, o ID ou uma parte do ID:

bash
docker stop my-apache-app

Depois disso a página sai do ar. E por causa do --rm, o container some até do docker ps -a: o Docker o descartou ao parar.

Subi de novo, dessa vez sem o --rm, e parei. Aí ele continuou na lista do docker ps -a, parado, e dá para religar:

bash
docker start my-apache-app

A aplicação voltou ao ar. Há cenários em que faz sentido manter esse vai e vem de parar e ligar, e outros em que não. Para teste, prefiro o --rm: você mata o container e não fica armazenamento sobrando na máquina.

Se você rodou sem o --rm e quer limpar um container parado, use docker rm my-apache-app e ele sai da lista.

Comando 4: docker pull, para baixar a imagem sem rodar

O docker pull baixa a imagem e não executa nada. Eu abri a página da httpd no Docker Hub, olhei as tags disponíveis e baixei outra versão:

bash
docker pull httpd:<tag>
docker images | grep httpd

O docker images lista as imagens locais, e o grep filtra só as httpd: no meu caso, a 2.4 que já estava e a nova, com a tag que eu puxei. Assim dá para ler a documentação de cada uma e escolher qual rodar.

Quando você manda docker run, ele faz três passos: procura a imagem local, baixa se não achar e executa. Por isso o pull é um comando intermediário, que quase ninguém usa direto: a gente vai direto ao run.

Comando 5: docker exec, para rodar um comando dentro do container

Digamos que você queira entrar no container para ver se a aplicação está certinha. Com o container no ar:

bash
docker exec -ti my-apache-app bash

O -ti liga a interação com o terminal. Dá para passar o nome ou o ID do container e, no fim, o comando, aqui o bash. O prompt muda para root@<id do container>, e você está dentro.

Para ter certeza de que está no container, conferi o diretório: /usr/local/apache2. Entrei na pasta htdocs, que é a do Apache, e lá estavam os dois arquivos que eu tinha criado fora. Criei mais um dentro do container:

bash
touch index3.html
Terminal dentro do container: pwd mostra /usr/local/apache2, o ls de htdocs lista index.html e index2.html, touch cria index3.html e exit devolve o prompt do host
Terminal dentro do container: pwd mostra /usr/local/apache2, o ls de htdocs lista index.html e index2.html, touch cria index3.html e exit devolve o prompt do host

O index3.html apareceu também na pasta do host, porque os dois compartilham o mesmo volume. Para sair, digite exit. O container continua rodando: você saiu só daquele terminal.

Comando 6: docker volume, para listar e gerenciar volumes

Para ver os volumes que a máquina tem, com ou sem container associado:

bash
docker volume ls

O docker volume help mostra os subcomandos: create, inspect, ls, prune e rm. Na aula usei só o ls.

Comando 7: docker inspect, para ver os detalhes de um recurso

Descobrir onde o conteúdo de um volume fica no disco é o caso mais útil. Rodei o inspect num volume de um projeto WordPress:

bash
docker inspect wordpress-ecs_wordpress_data
Saída do docker inspect do volume wordpress-ecs_wordpress_data: driver local e Mountpoint /var/lib/docker/volumes/wordpress-ecs_wordpress_data/_data
Saída do docker inspect do volume wordpress-ecs_wordpress_data: driver local e Mountpoint /var/lib/docker/volumes/wordpress-ecs_wordpress_data/_data

A saída mostra quando o volume foi criado, o driver (local), os labels e o Mountpoint, o caminho onde estão os dados. É muito útil quando você cria o volume sem informar o caminho, principalmente com Docker Compose, e depois não sabe onde está o conteúdo. Já me salvou quando trabalhava com Lambda local pelo Serverless Application Model, que faz muita coisa por baixo dos panos, e eu precisava achar um volume.

O inspect vale para outros recursos além de volume.

Comando 8: docker logs, para ler o log do container

bash
docker logs 7b0b

Passei o começo do ID do container. A saída mostra o log da execução: no exemplo, o aviso do Apache sobre o ServerName e as requisições GET /index2.html que eu tinha feito no navegador.

O problema é que ele mostra só o que já aconteceu. Para acompanhar em tempo real, use -f:

bash
docker logs -f 7b0b

Atualizei a página no navegador e cada requisição apareceu na hora no terminal. Para parar de acompanhar, Ctrl+C: o container continua rodando.

Saída do docker logs -f: uma linha GET /index.html ou /index2.html para cada atualização da página, das 17:49:30 às 17:55:38
Saída do docker logs -f: uma linha GET /index.html ou /index2.html para cada atualização da página, das 17:49:30 às 17:55:38
O ciclo de um container no dia a dia: subir, conferir, entrar, ler o log e parardocker runsobe o containerdocker pslista quem rodadocker execentra e roda comandodocker logslê a saídadocker stoppara o container
O ciclo de um container no dia a dia: subir, conferir, entrar, ler o log e parar

Bônus: docker help

O comando extra é o que mostra todos os outros:

bash
docker help

Ele lista cada comando, como attach, build, commit, cp e create, e o que dá para fazer com cada um. Vale reservar um tempo para explorar. Eu não sei todos, não sei nem metade, e não precisa: o que importa é entender como se trabalha com container e a lógica por trás. Se precisar de um comando, o help ou uma pesquisa resolvem. Alguns básicos, porém, vale saber de cor, porque não dá para consultar tudo o tempo todo.

Checklist

  • Suba um container com docker run -d --rm --name <nome> -p <porta-host>:<porta-container> <imagem>.
  • Use docker ps para ver quem roda e docker ps -a para ver também os parados.
  • Pare com docker stop <nome> e religue com docker start <nome> (só se rodou sem --rm).
  • Baixe uma imagem sem executar com docker pull e confira com docker images.
  • Entre no container com docker exec -ti <nome> bash e saia com exit.
  • Ache onde um volume guarda os dados com docker inspect <volume> e leia o Mountpoint.
  • Leia o log com docker logs <id> e acompanhe com docker logs -f <id>.

Esses oito comandos, mais o help, cobrem o dia a dia de quem está começando com container: subir, conferir, entrar, ler o log e parar.

O que os alunos dizem

  • “Comecei a estudar Cloud em 2023 e entrei na Imersão AWS para aprofundar minha prática.”

    Luiz Claudio, Arquiteto de Soluções

    Ver depoimento
  • “Hoje recebo oportunidades 100% remoto e finalmente me sinto recolocada no mercado.”

    Patrícia Prado, Desenvolvedora Back-end

    Ver depoimento
  • “A Formação AWS me mostrou o caminho, me deu prática de verdade e mudou minha vida.”

    Rodrigo Raspinola, Analista Cloud / SRE

    Ver depoimento

Formação AWS

Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.

Agende uma conversa

Prefere assistir?

A aula completa (29 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

Leia também

Compartilhe este post