Skip to main content

Principais comandos

docker run

Cria um novo contêiner, o inicia e executa o comando especificado (quando nada é especificado, executa o comando padrão).

$ docker run hello-world

Você verá uma saída como:

Hello from Docker!
This message shows that your installation appears to be working correctly.

(...)

No comando anterior o terminal é direcionado para dentro do contêiner. Para iniciá-lo no modo avulso (detached) utilizaremos o parâmetro -d:

$ docker run -d hello-world

O terminal exibirá o ID de criação do contêiner, algo como:

bdcaba00ed90289490331613191d1ec2010dbc94330b532b4da8f7714e417d8e

Quando um nome (parâmetro --name="nome") não é fornecido, o Docker criará o container com um nome aleatório, geralmente composto de 2 palavras (nome1_nome2).

Exemplo: inspiring_euclid

Dica: Todos os comandos de manipulação de contêiners docker poder ser utilizados se referenciando o nome do contêiner ou o seu respectivo ID.

docker ps

Lista os contêineres disponíveis na máquina. Por padrão, somente aqueles que estão atualmente executando serão exibidos. Para listar todos, utilize o parâmetro -a:

$ docker ps -a

No nosso exemplo, você verá algo como:

CONTAINER_ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14a72c95d77b hello-world "/hello" 1 minute ago Exited (0) 1 minutes ago   unruffled_bartik

docker start

Inicia um contêiner por nome, ou por ID. Utilizando o exemplo anterior, vamos copiar o ID informado na coluna CONTAINER_ID para iniciá-lo novamente.

$ docker start 14a72c95d77b

Você verá como saída o ID do container indicando que ele foi iniciado.

14a72c95d77b

docker stop

Encerra a execução de um contêiner. Mesma lógica do comando anterior.

$ docker stop 14a72c95d77b

docker restart

Reinicia a execução de um contêiner( stop e start). Mesma lógica do comando anterior.

docker rm

Remove um contêiner do host. Você pode utilizar docker ps -a para listar a relação de contêineres disponíveis, e removê-lo por nome ou id.

$ docker rm 14a72c95d77b

O comando docker rm somente remove containers que não estão em execução. Para remover um container em execução, use docker rm -f

Para conferir a remoção, vamos checar novamente os containers criados no host:

$ docker ps -a

docker images

Conferir as imagens docker atualmente disponíveis no host:

$ docker images

Quando uma imagem docker não está disponível localmente, o docker tentará fazer o download da imagem docker em um repositório docker (Ex: hub.docker.com). Caso o repositório seja privado, será necessário efetuar o login neste repositório para ter acesso às imagens.

docker pull

Faz o download da imagem docker do repositório para o host:

$ docker pull alpine

Você verá uma saída como:

Using default tag: latest
latest: Pulling from library/alpine
ec99f8b99825: Pull complete 
Digest: sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Quando você não especifica uma tag, o docker tomará como valor padrão a tag latest. O padrão de nomenclatura da imagem é nome-da-imagem:nome-da-tag.

Fazer o download de uma imagem docker em uma tag específica (tag: 3.20.1):

$ docker pull alpine:3.20.1

Você verá uma saída como:

3.20.1: Pulling from library/alpine
Digest: sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0
Status: Downloaded newer image for alpine:3.20.1
docker.io/library/alpine:3.20.1

Depois de baixarmos as imagens, vamos conferir novamente as imagens disponíveis:

$ docker images

Saída:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alpine       3.20.1    a606584aa9aa   12 days ago   7.8MB
alpine       latest    a606584aa9aa   12 days ago   7.8MB

docker rmi

Remove a imagem do host. No entanto, só é possível remover as imagens que não está sendo utilizadas por nenhum contêiner no host.

$ docker rmi alpine

Para ver a lista de todas as imagens baixadas para o host utilize docker images

docker exec

Executa um comando dentro de um contêiner que está em execução.

  • Primeiro executaremos um contêiner criado a partir de uma imagem do Ubuntu, em modo detached:
$ docker run --name ubuntu_bash -d -it ubuntu
  • Vamos conferir se o contêiner está em execução sem problemas:
$ docker ps -a

Saída:

CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
759d52725ffe   ubuntu    "/bin/bash"   7 seconds ago   Up 6 seconds             ubuntu_bash
  • Agora executaremos o comando ls -la dentro do contêiner:
$ docker exec ubuntu_bash ls -la

Saída:

total 56
drwxr-xr-x   1 root root 4096 Jul  3 12:50 .
drwxr-xr-x   1 root root 4096 Jul  3 12:50 ..
-rwxr-xr-x   1 root root    0 Jul  3 12:50 .dockerenv
lrwxrwxrwx   1 root root    7 Apr 22 13:08 bin -> usr/bin
drwxr-xr-x   2 root root 4096 Apr 22 13:08 boot
drwxr-xr-x   5 root root  360 Jul  3 12:50 dev
drwxr-xr-x   1 root root 4096 Jul  3 12:50 etc
drwxr-xr-x   3 root root 4096 Jun  5 02:06 home
lrwxrwxrwx   1 root root    7 Apr 22 13:08 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Apr 22 13:08 lib64 -> usr/lib64
drwxr-xr-x   2 root root 4096 Jun  5 02:02 media
drwxr-xr-x   2 root root 4096 Jun  5 02:02 mnt
drwxr-xr-x   2 root root 4096 Jun  5 02:02 opt
dr-xr-xr-x 399 root root    0 Jul  3 12:50 proc
drwx------   2 root root 4096 Jun  5 02:05 root
drwxr-xr-x   4 root root 4096 Jun  5 02:06 run
lrwxrwxrwx   1 root root    8 Apr 22 13:08 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Jun  5 02:02 srv
dr-xr-xr-x  13 root root    0 Jul  3 12:50 sys
drwxrwxrwt   2 root root 4096 Jun  5 02:05 tmp
drwxr-xr-x  12 root root 4096 Jun  5 02:02 usr
drwxr-xr-x  11 root root 4096 Jun  5 02:05 var
  • Para logar dentro do contêiner e executar comandos diretamente de lá (exit para sair):
$ docker exec -it ubuntu_bash bash

Saída:

root@759d52725ffe:/# 

Note que você está dentro do terminal do contêiner, com o usuário root.

Saia do contêiner:

root@759d52725ffe:/# exit
exit

docker logs

Exibe no terminal os logs do contêiner (parâmetro -f pode ser utilizado para travar a tela exibindo os logs, Ctrl+C para sair):

$ docker logs ubuntu_bash

Remover o container criado para realizar os testes:

$ docker rm -f ubuntu_bash

Saída:

ubuntu_bash

Referências

docker command CLI

List of Docker Commands with Examples