Pesquisa de site

Tutorial de comandos do Docker | Introdução ao Docker


Comandos essenciais do Docker para iniciantes

Este tutorial detalhado do Docker aborda os comandos do Docker essenciais, como criar um novo contêiner, executar o contêiner, remover um contêiner e assim por diante. Além disso, este guia também explica como construir sua própria imagem Docker personalizada a partir de um contêiner existente e como remover contêineres e imagens. Sem mais delongas, vamos começar com o uso básico do Docker!

Etapas de instalação do Docker

O Docker pode ser instalado na maioria dos sistemas operacionais Linux modernos. Se você ainda não instalou o Docker, consulte os seguintes guias:

  • Instale o Docker Engine e o Docker Compose no AlmaLinux, CentOS, Rocky Linux
  • Como instalar o Docker e o Docker Compose no Ubuntu

O que é imagem Docker e contêiner Docker?

Antes de começar a usar o Docker, deixe-me esclarecer o que é uma imagem do Docker e um contêiner do Docker.

Uma imagem Docker é o arquivo que decide como um contêiner deve se comportar, e Docker Container é o estágio de execução ou parada de uma imagem Docker.

Os contêineres são isolados do restante dos arquivos do host.

Quando executamos um contêiner Docker, ele usa um sistema de arquivos isolado fornecido por uma imagem Docker. A imagem Docker consiste em tudo o que é necessário para executar um aplicativo – todas as dependências, configurações, scripts, binários, etc.

A imagem também contém outras configurações para o contêiner, como variáveis de ambiente, um comando padrão para execução e outros metadados.

Introdução ao Docker no Linux

Todas as etapas abaixo foram testadas nas edições de servidor Ubuntu 22.04, 20.04 e 18.04 LTS. Entretanto, as etapas fornecidas nas seções subsequentes são comuns a todas as plataformas Linux. Por exemplo, você também pode executar os mesmos comandos em um sistema baseado em RHEL (por exemplo, AlmaLinux).

1. Pesquise imagens do Docker

Podemos obter as imagens da biblioteca oficial do docker chamada Docker hub ou criar a nossa própria.

Para quem está se perguntando, o Docker hub é um repositório central online onde todos os usuários do Docker constroem, testam e salvam suas imagens do Docker. O hub Docker possui dezenas de milhares de imagens Docker e o número de imagens cresce a cada dia.

Você pode pesquisar qualquer imagem do Docker com o comando "docker search" na linha de comando.

Por exemplo, para pesquisar imagens docker baseadas em Alpine Linux, execute:

sudo docker search alpine

Exemplo de resultado:

Pesquisar imagens do Docker

Para pesquisar imagens baseadas em Ubuntu, execute:

sudo docker search ubuntu

Você pode até pesquisar imagens de qualquer aplicativo, por exemplo Nginx, como abaixo:

sudo docker search nginx

O hub Docker possui uma ampla variedade de imagens. Seja um sistema operacional, aplicativo ou combinação de vários aplicativos (por exemplo, pilha LAMP), você encontrará imagens Docker pré-construídas para tudo no Docker Hub.

Se algo que você procura não estiver disponível, você pode construí-lo e disponibilizá-lo publicamente por meio do Docker Hub ou mantê-lo privado para seu próprio uso.

2. Baixe imagens do Docker

Para baixar a imagem Docker para Ubuntu OS, execute o seguinte comando no Terminal:

sudo docker pull ubuntu

O comando acima irá baixar a imagem mais recente do Ubuntu do hub Docker.

Exemplo de resultado:

Using default tag: latest
latest: Pulling from library/ubuntu
405f018f9d1d: Pull complete 
Digest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Você também pode baixar uma versão específica da imagem do Ubuntu usando o comando:

sudo docker pull ubuntu:20.04

O Docker nos permite baixar qualquer imagem e iniciar o contêiner com base nessa imagem, independentemente do sistema operacional host.

Por exemplo, para baixar a imagem do Alpine OS, execute:

sudo docker pull alpine

Baixar imagens do Docker

3. Listar imagens do Docker

Todas as imagens Docker baixadas serão salvas no diretório /var/lib/docker/.

Para visualizar a lista de imagens Docker baixadas, execute:

sudo docker images

Exemplo de resultado:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    27941809078c   3 weeks ago   77.8MB
ubuntu       20.04     20fffa419e3a   3 weeks ago   72.8MB
alpine       latest    e66264b98777   5 weeks ago   5.52MB

Listar imagens do Docker

Como você pode ver acima, baixei três imagens do Docker - Ubuntu mais recente, Ubuntu 20.04 e Alpine Linux.

Agora vamos ver como iniciar ou executar os contêineres com base nas imagens baixadas.

4. Execute contêineres Docker

Podemos iniciar um contêiner de duas maneiras - usando sua Image TAG do Docker ou Image ID.

TAG refere-se a um instantâneo específico da imagem e o IMAGE ID é o identificador exclusivo correspondente para essa imagem.

Dê uma olhada na seguinte captura de tela:

Tag e ID da imagem Docker

Como você pode ver nos resultados acima, as tags são "latest" e "20.04".

  • 27941809078c é o ID da IMAGEM da imagem do Docker mais recente do Ubuntu,
  • 20fffa419e3a é o ID da imagem do Docker do Ubuntu 20.04
  • e e66264b98777 é o ID da imagem Alpine mais recente do Docker.

4.1. Execute contêineres usando tag

Depois de baixar as imagens do Docker de sua escolha, execute o seguinte comando para iniciar um contêiner do Docker e conectar-se a ele usando seu TAG.

sudo docker run -t -i ubuntu:latest /bin/bash

Ou,

sudo docker run -it ubuntu:latest /bin/bash

Aqui,

  • -t : Atribui um novo Pseudo Terminal dentro do contêiner do Ubuntu.
  • -i : permite fazer uma conexão interativa capturando o padrão (STDIN) do contêiner.
  • ubuntu:latest : imagem do Docker do Ubuntu com a tag "latest".
  • /bin/bash : shell BASH para o novo contêiner. Isso é opcional. Se você não mencionar o shell, o shell padrão será atribuído ao contêiner.

Depois de iniciar o contêiner, você será direcionado automaticamente ao shell do contêiner (prompt de comando):

Execute contêineres usando tag

O novo contêiner baseado na imagem mais recente do Ubuntu foi iniciado agora. Um ID exclusivo e um nome serão fornecidos a todos os novos contêineres. Como você pode ver na saída acima, o ID do contêiner do Ubuntu é 2f2a5b826762. Veremos onde encontrar o nome do contêiner em um minuto.

Agora você pode começar a trabalhar no contêiner. Depois de terminar o Container, você pode retornar ao Terminal do sistema host (no meu caso, é Ubuntu 22.04 LTS) sem encerrar o Container (sistema operacional convidado).

4.2. Desconecte-se dos contêineres em execução

Para desanexar de um contêiner em execução (sem encerrá-lo), pressione CTRL+P seguido de CTRL+Q.

Agora, você está de volta à janela do terminal do computador host original. Observe que o contêiner ainda está sendo executado em segundo plano e ainda não o encerramos.

4.3. Execute contêineres usando IMAGE ID

A outra maneira de iniciar um contêiner e conectar-se a ele é usando o IMAGE ID conforme mostrado abaixo:

sudo docker run -it 20fffa419e3a /bin/bash

Aqui,

  • 20fffa419e3a - ID da imagem

Para desconectar do contêiner e retornar ao Terminal do sistema host, pressione CTRL+P e CTRL+Q. Novamente, apenas nos separamos do contêiner, mas não o paramos. O contêiner ainda está em execução em segundo plano.

4.4. Execute contêineres em modo desanexado

Nas seções anteriores, iniciamos um contêiner e o anexamos imediatamente. E então nos desconectamos do contêiner assim que nosso trabalho com ele for concluído.

Você também pode iniciar o contêiner no modo desanexado (sem anexá-lo automaticamente).

Para executar um contêiner em segundo plano, execute:

sudo docker run -it -d alpine:latest

Exemplo de resultado:

d74f2ceb5f3ad2dbddb0b26e372adb14efff91e75e7763418dbd12d1d227129d

As primeiras 12 letras na saída acima indicam o ID do contêiner.

Você pode verificar se o contêiner está em execução usando o comando docker ps:

sudo docker ps
CONTAINER ID   IMAGE           COMMAND     CREATED         STATUS         PORTS     NAMES
d74f2ceb5f3a   alpine:latest   "/bin/sh"   3 seconds ago   Up 2 seconds             zen_pascal

Execute contêineres em segundo plano

Como você pode ver na saída acima, criamos um contêiner Alpine, mas não o conectamos.

Se você quiser anexá-lo ao contêiner, simplesmente execute:

sudo docker attach d74f2ceb5f3a

5. Visualizar contêineres em execução

Para visualizar a lista de contêineres em execução, execute o seguinte comando:

sudo docker ps

Exemplo de resultado:

CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
f7e04eed577e   20fffa419e3a    "/bin/bash"   6 minutes ago    Up 6 minutes              brave_mclean
2f2a5b826762   ubuntu:latest   "/bin/bash"   18 minutes ago   Up 18 minutes             hungry_leavitt

Ver contêineres em execução

Aqui,

  • f7e04eed577e é o ID do contêiner Ubuntu criado com a imagem "2f2a5b826762". E "brave_mclean" é o nome deste contêiner.
  • 2f2a5b826762 é o ID do contêiner do Ubuntu criado com a imagem "ubuntu:latest". E "hungry_leavitt" é o nome deste contêiner.

Sempre que um novo contêiner for criado, um ID e um nome exclusivos serão fornecidos a ele, para que possamos acessar o contêiner usando seu ID ou nome.

Atenção: observe que o ID do contêiner e o ID da imagem do Docker são diferentes.

Para listar todos os contêineres disponíveis (em execução ou parados), execute:

sudo docker ps -a

6. Anexar ou desconectar de contêineres em execução

Primeiro, encontre o nome ou ID do contêiner com o comando docker ps.

sudo docker ps

Em seguida, anexe ao contêiner em execução usando o comando docker attachment.

sudo docker attach <container-id>

Por exemplo, vou anexar ao contêiner que possui o ID "f7e04eed577e" como abaixo:

sudo docker attach f7e04eed577e

Você também pode anexar a um contêiner usando seu nome.

sudo docker attach brave_mclean

Agora você está conectado ao contêiner.

Para desanexar do contêiner, basta pressionar CTRL+P seguido de CTRL+Q.

7. Iniciar, reiniciar, pausar e parar contêineres

Você pode iniciar, reiniciar, pausar ou parar um contêiner Docker usando seu nome ou ID de contêiner.

Primeiro, encontre o nome ou ID do contêiner com o comando docker ps -a.

Encontre o ID e o nome do contêiner

Agora você pode iniciar um contêiner usando o comando docker start com nome ou ID como abaixo.

sudo docker start modest_cray
sudo docker start 10615254bb45

Você pode iniciar vários contêineres separados por espaço como abaixo.

sudo docker start 24b5ee8c3d3a 56faac6d20ad d74f2ceb5f3a

Para reiniciar normalmente um contêiner em execução, faça:

sudo docker start 10615254bb45

Para pausar processos em um contêiner em execução:

sudo docker pause 10615254bb45

Para retomar processos em um contêiner em execução:

sudo docker unpause 10615254bb45

Para bloquear um contêiner até que outros parem:

sudo docker wait 10615254bb45

Da mesma forma, podemos parar um contêiner docker usando seu nome ou ID. Se você já estiver dentro do shell do contêiner, poderá interrompê-lo simplesmente executando o seguinte comando:

exit

Você também pode parar (desligar o contêiner) do sistema host Docker usando o seguinte comando:

sudo docker stop 10615254bb45

Você pode sair de vários contêineres separados por espaço, conforme mostrado abaixo.

sudo docker stop 35b5ee8c3d3a 10615254bb45

Após sair do container, verifique se ele realmente está parado listando os containers em execução com o comando:

sudo docker ps

8. Elimine contêineres Docker

O comando docker stop desligará normalmente um contêiner em execução. Às vezes, você pode ficar preso em um contêiner que não responde ou deseja encerrar um contêiner à força.

Para encerrar um contêiner enviando um SIGKILL para um contêiner em execução, execute:

sudo docker kill 10615254bb45

9. Exclua contêineres automaticamente após fechá-los

Você pode testar um contêiner e excluí-lo quando terminar de usar o contêiner. Nesse caso, você pode excluir automaticamente o Container após fechá-lo usando o sinalizador --rm:

sudo docker run -it --rm debian:latest

Assim que você sair do Container, ele será excluído automaticamente.

Excluir contêineres automaticamente

Como você pode ver na saída acima, criei um novo contêiner Debian. Assim que saio do contêiner, ele é excluído automaticamente. A saída docker ps -a mostra que o contêiner Debian não existe.

10. Atribuir nome aos contêineres

Se você observar atentamente a saída dos comandos anteriores, cada contêiner receberá um nome aleatório quando você iniciar um contêiner. Se você não nomear seus contêineres, o Docker os nomeará automaticamente.

Dê uma olhada no exemplo a seguir.

sudo docker run -it -d alpine:latest
2af79e97a825c91bf374b4862b9e7c22fc22acd1598005e8bea3439805ec335d
sudo docker run -it -d alpine:latest
80b53b7e661d33696b65c78267fc3f067b6100799c925910db4721963e3fae0a
sudo docker ps
CONTAINER ID   IMAGE           COMMAND     CREATED         STATUS         PORTS     NAMES
80b53b7e661d   alpine:latest   "/bin/sh"   3 seconds ago   Up 2 seconds             bold_margulis
2af79e97a825   alpine:latest   "/bin/sh"   6 seconds ago   Up 5 seconds             recursing_taussig

Como você pode ver na saída acima, embora eu tenha criado dois contêineres usando a mesma imagem do docker, ambos recebem ID e nomes diferentes.

Se você deseja atribuir um nome estático ao contêiner, use o sinalizador --name como abaixo:

sudo docker run -it -d --name ostechnix_alpine alpine:latest

O comando acima criará um novo contêiner chamado ostechnix_alpine em modo desanexado.

vamos ver a lista dos contêineres em execução:

sudo docker ps

Exemplo de resultado:

CONTAINER ID   IMAGE           COMMAND     CREATED         STATUS         PORTS     NAMES
397111fac537   alpine:latest   "/bin/sh"   2 seconds ago   Up 2 seconds             ostechnix_alpine
80b53b7e661d   alpine:latest   "/bin/sh"   7 minutes ago   Up 7 minutes             bold_margulis
2af79e97a825   alpine:latest   "/bin/sh"   7 minutes ago   Up 7 minutes             recursing_taussig

Atribuir nome aos contêineres

Você notou o nome do primeiro Container na saída acima? Sim, atribuímos um nome personalizado (ou seja, ostechnix_alpine) ao Container.

Atribuir nomes personalizados aos contêineres nos traz um benefício. Podemos identificar facilmente o que está instalado naquele contêiner observando o nome do contêiner.

11. Crie imagens Docker personalizadas

O Docker não serve apenas para baixar e usar os contêineres existentes. Você também pode criar sua própria imagem docker personalizada.

Vamos iniciar um contêiner Ubuntu:

sudo docker run -it ubuntu:latest

Agora você estará no shell do contêiner.

Em seguida, instale qualquer software ou faça o que quiser no contêiner.

Por exemplo, vamos instalar o servidor web Apache no contêiner.

apt update
apt install apache2

Da mesma forma, instale e teste qualquer software de sua escolha no Container.

Quando terminar, desconecte-se do contêiner (não saia dele) e retorne ao shell do sistema host. Não pare ou desligue o contêiner. Para desanexar do contêiner sem interrompê-lo, pressione CTRL+P seguido de CTRL+Q.

No terminal host do Docker, execute o seguinte comando para encontrar o ID do contêiner:

sudo docker ps

Por fim, crie uma imagem Docker do Container em execução usando o comando:

sudo docker commit 377e6d77ebb5 ostechnix/ubuntu_apache

Exemplo de resultado:

sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1

Aqui,

  • 377e6d77ebb5 – ID do contêiner do Ubuntu.
  • ostechnix – Nome do usuário que criou o contêiner.
  • ubuntu_apache – Nome da imagem docker criada pelo usuário ostechnix.

Vamos verificar se a nova imagem Docker foi criada ou não com o comando:

sudo docker images

Exemplo de resultado:

REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
ostechnix/ubuntu_apache   latest    bc5e5f95ca59   55 seconds ago   229MB
debian                    latest    d2780094a226   11 days ago      124MB
ubuntu                    latest    27941809078c   3 weeks ago      77.8MB
ubuntu                    20.04     20fffa419e3a   3 weeks ago      72.8MB
alpine                    latest    e66264b98777   5 weeks ago      5.52MB

Crie imagens Docker personalizadas

Como você pode ver na saída acima, a nova imagem Docker foi criada em nosso sistema host Docker a partir do Container em execução.

Agora, você pode criar um novo contêiner a partir da imagem Docker recém-criada, como de costume, com o comando:

sudo docker run -it ostechnix/ubuntu_apache

12. Removendo Contêineres

Depois de concluir toda a pesquisa e desenvolvimento com contêineres Docker, você poderá excluí-los se não quiser mais.

Para fazer isso, primeiro temos que parar (desligar) os Containers em execução.

Vamos descobrir os contêineres em execução com o comando:

sudo docker ps

Exemplo de resultado:

CONTAINER ID   IMAGE           COMMAND   CREATED         STATUS         PORTS     NAMES
377e6d77ebb5   ubuntu:latest   "bash"    7 minutes ago   Up 7 minutes             elegant_beaver

Pare o contêiner em execução usando seu ID:

sudo docker stop 377e6d77ebb5

Agora, exclua o contêiner usando o comando:

sudo docker rm 377e6d77ebb5

Da mesma forma, pare todos os contêineres e exclua-os se não forem mais necessários.

Excluir vários contêineres, um por um, pode ser uma tarefa tediosa. Assim, podemos deletar todos os containers parados de uma só vez, basta executar:

sudo docker container prune

Digite "Y" e pressione a tecla ENTER para excluir os contêineres.

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
397111fac5374921b974721ee646b2d5fbae61ca9c6e8b90fbf47952f382a46b
80b53b7e661d33696b65c78267fc3f067b6100799c925910db4721963e3fae0a
[...]
Total reclaimed space: 176B

Excluir contêineres

Este comando funcionará apenas com as versões mais recentes do Docker.

Verifique se todos os contêineres foram excluídos usando o comando:

sudo docker ps -a

Se você não vir nenhuma saída, todos os contêineres serão excluídos.

13. Removendo imagens Docker

Lembre-se, primeiro você deve remover todos os contêineres antes de remover todas as imagens a partir das quais esses contêineres foram criados.

Depois de remover os contêineres, você poderá excluir as imagens do Docker que não são mais necessárias.

Para encontrar a lista de imagens Docker baixadas:

sudo docker images

Exemplo de resultado:

REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
ostechnix/ubuntu_apache   latest    bc5e5f95ca59   14 minutes ago   229MB
debian                    latest    d2780094a226   11 days ago      124MB
ubuntu                    latest    27941809078c   3 weeks ago      77.8MB
ubuntu                    20.04     20fffa419e3a   3 weeks ago      72.8MB
alpine                    latest    e66264b98777   5 weeks ago      5.52MB

Como você pode ver acima, temos 5 imagens Docker em nosso sistema host.

Vamos excluí-los usando seu ID IMAGE:

sudo docker rmi ce5aa74a48f1

Exemplo de resultado:

Untagged: ostechnix/ubuntu_apache:latest
Deleted: sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1
Deleted: sha256:a8e4797160a2b2d33d8bd1bd67e008260c022b3a53fbcc198b2b74d9eae5961d

Da mesma forma, exclua todas as outras imagens do Docker.

Para remover todos os contêineres parados, todas as imagens, construir cache, todas as redes, execute:

sudo docker system prune -a

Tenha cuidado ao usar este comando. Ele excluirá todos os contêineres, redes e imagens não utilizados (pendentes e não referenciados).

Exclua tudo no Docker

Por padrão, os volumes não são removidos para evitar que dados importantes sejam excluídos, mesmo que atualmente não haja nenhum contêiner usando o volume.

Se você quiser excluir tudo, incluindo os volumes, use o sinalizador --volumes.

sudo docker system prune -a --volumes

Solução de problemas do Docker

O Docker não permitirá que você exclua as imagens do Docker se elas forem usadas por qualquer contêiner em execução ou parado.

Por exemplo, quando tento excluir uma imagem Docker com ID b72889fa879c, de um dos meus antigos servidores Ubuntu. Eu recebi o seguinte erro:

Error response from daemon: conflict: unable to delete b72889fa879c (must be forced) - image is being used by stopped container dde4dd285377

Isso ocorre porque a imagem do Docker que você deseja excluir está sendo usada por outro contêiner.

Então, vamos verificar o Container em execução usando o comando:

sudo docker ps

Exemplo de resultado:

Mostrar contêineres docker em execução

Ops! Não há contêiner em execução.

Vamos verificar novamente todos os contêineres (em execução e parados) com o comando:

sudo docker ps -a

Exemplo de resultado:

Mostrar contêineres docker em execução e parados

Como você pode ver, ainda existem alguns contêineres parados usando uma das imagens do Docker. Então, vamos deletar todos os contêineres.

Exemplo:

sudo docker rm 12e892156219

Da mesma forma, remova todos os contêineres conforme mostrado acima usando o ID do respectivo contêiner.

Depois de excluir todos os contêineres, remova finalmente as imagens do Docker.

Exemplo:

sudo docker rmi b72889fa879c

É isso. Agora verifique se há outras imagens Docker no host com o comando:

sudo docker images

Agora você provavelmente não terá nenhuma imagem do Docker.

Leia a seguir:

  • Explicando os conceitos de rede do Docker
  • Explicando volumes do Docker com exemplos
  • Uma breve introdução ao Dockerfile
  • Introdução ao Docker Compose no Linux
  • Como executar o Docker como usuário não root no Linux
  • Tutorial do Podman – Primeiros passos com o Podman

Conclusão

Neste abrangente tutorial de introdução ao Docker, explicamos os fundamentos do Docker, como criar, executar, pesquisar, remover contêineres e também construir a própria imagem do Docker a partir de um contêiner. Também explicamos como excluir contêineres e imagens do Docker quando eles não forem mais necessários.

Espero que você tenha uma ideia básica sobre o uso do Docker.

Para obter mais detalhes, consulte os links de recursos oficiais fornecidos no final deste guia ou deixe um comentário na seção de comentários abaixo.

Leitura sugerida:

  • Como atualizar automaticamente contêineres Docker em execução
  • ctop – Uma ferramenta de monitoramento de linha de comando para contêineres Linux
  • Portiner – uma maneira mais fácil de gerenciar o Docker
  • PiCluster – um aplicativo de gerenciamento Docker simples baseado na Web
  • Dockly - Gerencie contêineres Docker a partir do terminal
  • Converter comandos de execução do Docker em arquivos Docker-Compose

Recursos:

  • Site Docker
  • Documentação do Docker

E-book gratuito do Docker:

  • E-book gratuito: "Livro de receitas de conteinerização do Docker"

Artigos relacionados