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

> Os 8 comandos Docker que você usa todo dia, com exemplo real: run, ps, stop/start, pull, exec, volume, inspect e logs, mais o help.

- Autor: Henrylle Maia, consultor AWS
- Publicado em: 2026-10-15
- Assuntos: Containers
- URL: https://pages.formacaoaws.com.br/blog/comandos-docker-essenciais/
- Aula de origem: "8 comandos Docker essenciais para quem está começando" (https://www.youtube.com/watch?v=I7F3FLLLRZ4)

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](https://docs.docker.com/reference/cli/docker/). Aqui eu não explico o que é Docker: para isso, veja [O que é Docker](https://pages.formacaoaws.com.br/blog/o-que-e-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](https://pages.formacaoaws.com.br/blog/volume-no-docker-windows-e-linux/).

## 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](https://pages.formacaoaws.com.br/blog/assets/posts/comandos-docker-essenciais/docker-exec-bash.webp)

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](https://pages.formacaoaws.com.br/blog/assets/posts/comandos-docker-essenciais/docker-inspect-volume.webp)

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](https://pages.formacaoaws.com.br/blog/assets/posts/comandos-docker-essenciais/docker-logs-follow.webp)

**Fluxo:** docker run (sobe o container) → docker ps (lista quem roda) → docker exec (entra e roda comando) → docker logs (lê a saída) → docker stop (para o container)

## 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.
