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 que já tenha sido criado no host, seu acesso poderá ser realizado 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
Dica: Um contêiner pode ser finalizado por ter terminado de executar a rotina para qual ele foi designado (Exemplo: processamento de um arquivo texto) ou por ter encontrado um erro no serviço (Exemplo: configuração incorreta, como um erro de sintaxe, no servidor web). Quando se cria um contêiner, pode-se definir qual o política padrão de reinicialização quando ele é encerrado: no
, always
, on-failure
, unless-stopped
.
docker stop
Encerra a execução de um contêiner. Mesma lógica do comando anterior.
docker stop 14a72c95d77b
Dica: A execução do container é paralisada, no entanto o container não é removido do host.
docker restart
Reinicia a execução de um contêiner( stop e start). Mesma lógica dodos comandocomandos anterior.anteriores.
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 stats
Exibe o consumo de recursos dos containers em execução no host:
docker stats
Saída (exemplo):
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e95bd53f6904 apache-ecampus 0.00% 98.92MiB / 512MiB 19.32% 22.6MB / 48.3MB 1.86MB / 12.3kB 8
77aa8c8f5d9b pgadmin4 0.03% 202.9MiB / 31.18GiB 0.64% 53MB / 14MB 5.07MB / 22.3MB 20
c3f5ff58225d lumen-pm 0.01% 52.88MiB / 31.18GiB 0.17% 318kB / 0B 5.41MB / 8.19kB 8
7659f7c19173 void-mail 6.08% 18.43MiB / 512MiB 3.60% 8.5MB / 9MB 6.45MB / 0B 2
4edcb809e7f8 apache-void 0.01% 11.64MiB / 512MiB 2.27% 13.1MB / 349kB 188kB / 8.19kB 7
39294708453c apache-diploma 0.00% 2.672MiB / 512MiB 0.52% 348MB / 41.2MB 1.4MB / 9.72MB 2
c0187b82297c apache-relatorio 0.00% 4.535MiB / 512MiB 0.89% 308MB / 7.45MB 3.44MB / 0B 2
ca7dd8afcbe3 laravel-mangaba 0.01% 124.9MiB / 31.18GiB 0.39% 318kB / 0B 10.9MB / 13.3MB 8
6e79d13253aa laravel-assinador 0.00% 152.2MiB / 31.18GiB 0.48% 1.95MB / 1.71MB 3.42MB / 9.5MB 8
f782b4d255c6 rebrow-assinador 0.01% 22.86MiB / 31.18GiB 0.07% 318kB / 0B 4.89MB / 324kB 1
38aa0954d19c web-ckan 0.01% 183.2MiB / 31.18GiB 0.57% 22.8MB / 22.6MB 36.9kB / 4.31MB 11
80e596827889 apache-moodlev3 0.01% 10.5MiB / 512MiB 2.05% 13.1MB / 352kB 12.3kB / 4.1kB 6
670a68bc71ff postgres-ecampus 0.26% 168.2MiB / 31.18GiB 0.53% 50MB / 654MB 23.6MB / 505MB 7
e9265ae24b14 conector-ufvjm 0.25% 187.9MiB / 31.18GiB 0.59% 9.31MB / 8.72MB 16.4kB / 8.36MB 43
7aff38a1598f phpmyadmin 0.01% 41.53MiB / 31.18GiB 0.13% 318kB / 0B 422kB / 1.98MB 7
fb98fc81448a postgres-mangaba 0.01% 18.11MiB / 31.18GiB 0.06% 318kB / 0B 1.45MB / 14.4MB 7
27739272e682 apache-ldapadmin 0.01% 13.84MiB / 31.18GiB 0.04% 670kB / 289kB 8.19kB / 12.3kB 8
30bf52a8d11a solr-ckan 0.11% 335.9MiB / 31.18GiB 1.05% 4.08MB / 3.75MB 45.1kB / 68.8MB 48
8481f13f87b7 postgres-pressiga 0.67% 43.35MiB / 31.18GiB 0.14% 4.14MB / 3.74MB 4.86MB / 71.7MB 7
6d1e7ba2556d maria-pm 0.06% 97.93MiB / 31.18GiB 0.31% 319kB / 0B 11.1MB / 2.17MB 31
35aac4c5e8ca redis-ckan 0.20% 3.551MiB / 31.18GiB 0.01% 340kB / 20.8kB 520kB / 0B 5
ade1ecfeb5e8 postgres-conector 0.01% 20.16MiB / 31.18GiB 0.06% 9.03MB / 8.98MB 4.83MB / 23MB 7
6e0fe48184b3 datapusher-ckan 0.02% 25.97MiB / 31.18GiB 0.08% 319kB / 0B 16.4kB / 111kB 1
15e396ca1835 postgres-ckan 0.00% 27.46MiB / 31.18GiB 0.09% 17.7MB / 17.3MB 8.09MB / 43.1MB 12
2fafc1c89a6c redis-assinador 0.18% 7.848MiB / 31.18GiB 0.02% 319kB / 0B 4.1kB / 0B 5
5daf93ede22b postgres-moodle 0.00% 21.84MiB / 31.18GiB 0.07% 318kB / 0B 5.52MB / 20.1MB 7
dc3216f22764 mailhog 0.00% 14.86MiB / 31.18GiB 0.05% 940kB / 574kB 2.86MB / 1.89MB 18
7237c9d8ab05 cache-ecampus 0.03% 8.301MiB / 31.18GiB 0.03% 2.37MB / 925kB 16.4kB / 0B 10
3819a952c8e6 ldap-ufvjm 0.03% 724.1MiB / 31.18GiB 2.27% 2.59MB / 1.19MB 586kB / 445MB 4
e05b811b58bc postgres-assinador 0.01% 28.07MiB / 31.18GiB 0.09% 2.03MB / 1.63MB 12.3MB / 43.5MB 7
Para liberar a saída do terminal novamente use o atalho Ctrl + C
.
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