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