Introdução
Docker é uma plataforma de containerização poderosa que revolucionou a forma como os desenvolvedores constroem, implantam e gerenciam aplicações. Neste tutorial, você aprenderá como verificar a sua instalação do Docker e garantir que ela está funcionando corretamente. Você também descobrirá como solucionar problemas comuns que podem surgir ao trabalhar com o Docker.
Ao final deste laboratório, você terá uma sólida compreensão de como verificar os detalhes da instalação do Docker e confirmar que seu ambiente Docker está funcionando adequadamente.
Este Lab requer uma conexão com a internet para aprendizado, portanto, apenas usuários Pro podem iniciar a VM. Atualize sua conta para Pro
Verificando a Versão e o Status do Docker
Antes de mergulhar nas operações do Docker, é essencial verificar se o Docker está devidamente instalado em seu sistema e funcionando corretamente. Nesta etapa, verificaremos a versão do Docker e o status do daemon.
Verificar a Versão do Docker
Primeiro, vamos verificar a versão do Docker que está instalada em seu sistema. Abra um terminal e execute o seguinte comando:
docker --version

Este comando exibe a versão do Docker instalada. Você deve ver uma saída semelhante a:
Docker version 20.10.21, build baeda1f
Para obter informações de versão mais detalhadas, incluindo os componentes cliente e servidor, use:
docker version
Isso mostrará informações abrangentes da versão para o cliente e o servidor (daemon) do Docker, juntamente com outros detalhes, como a versão do Go usada para construir o Docker. A saída será algo como:
Client:
Version: 20.10.21
API version: 1.41
Go version: go1.18.1
Git commit: baeda1f
Built: Tue Oct 25 18:02:28 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.1
Git commit: 3056208
Built: Tue Oct 25 18:00:19 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.10
GitCommit: 770bd0108c32f3fb5c73ae1264f7e503fe7b2661
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Se você receber um erro dizendo "docker: command not found", isso indica que o Docker não está instalado corretamente ou não está no seu PATH.
Verificar o Status do Daemon do Docker
Em seguida, vamos verificar se o daemon (serviço) do Docker está em execução. O daemon do Docker é o serviço em segundo plano responsável por gerenciar os contêineres Docker.
Execute o seguinte comando:
sudo systemctl status docker
Você deve ver uma saída indicando que o serviço Docker está ativo e em execução:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-05-10 12:34:56 UTC; 2h 15min ago
Main PID: 1234 (dockerd)
Tasks: 8
Memory: 38.5M
CPU: 25.102s
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Se o serviço Docker não estiver em execução, você pode iniciá-lo com:
sudo systemctl start docker
Para garantir que o Docker inicie automaticamente quando seu sistema inicializar, você pode habilitá-lo:
sudo systemctl enable docker
Verificar Informações do Docker
Para uma visão geral abrangente da sua instalação do Docker, use o comando docker info:
docker info
Isso exibirá informações detalhadas sobre sua instalação do Docker, incluindo:
- Contagem de contêineres e imagens
- Driver de armazenamento (Storage driver)
- Diretório raiz do Docker
- Informações de tempo de execução (Runtime information)
- Configurações de rede
- Configuração do registro (Registry configuration)
A saída será bastante extensa, mas fornece informações valiosas sobre sua configuração do Docker.
Executando um Contêiner de Teste
Agora que confirmamos que o Docker está instalado e em execução, vamos testá-lo executando um contêiner simples. Esta etapa verificará se o Docker pode baixar imagens e executar contêineres corretamente.
O Contêiner Hello World
O Docker fornece uma imagem "hello-world" simples, projetada especificamente para testar instalações do Docker. Este pequeno contêiner verifica se:
- O cliente Docker pode se conectar ao daemon Docker
- O daemon Docker pode extrair imagens do Docker Hub
- O Docker pode criar e executar um contêiner
Vamos executar este contêiner de teste com o seguinte comando:
docker run hello-world
Quando você executa este comando pela primeira vez, o Docker irá:
- Verificar se a imagem hello-world existe localmente
- Se não, baixá-la do Docker Hub
- Criar um contêiner a partir desta imagem
- Iniciar o contêiner, que imprime uma mensagem e sai
Você deve ver uma saída semelhante a:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Esta mensagem confirma que sua instalação do Docker está funcionando corretamente.
Listando Contêineres
Após executar o contêiner hello-world, vamos verificar a lista de contêineres em seu sistema. O contêiner que acabamos de executar já foi encerrado, mas ainda podemos vê-lo na lista de todos os contêineres.
Para ver todos os contêineres (incluindo os parados), execute:
docker ps -a
Você deve ver uma saída semelhante a:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7c33e8f6cb8 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago romantic_galileo
A flag -a mostra todos os contêineres, incluindo aqueles que foram parados. Sem esta flag, docker ps mostraria apenas os contêineres em execução.
Observe que a coluna STATUS mostra "Exited (0)", o que significa que o contêiner concluiu sua tarefa e saiu com um código de status 0 (indicando sucesso).
Listando Imagens Docker
A imagem hello-world foi baixada para sua máquina local. Vamos verificar isso listando todas as imagens Docker:
docker images
Você deve ver uma saída semelhante a:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
Isso confirma que a imagem hello-world está armazenada localmente em seu sistema.
Explorando Comandos Básicos do Docker
Agora que verificamos que nossa instalação do Docker funciona corretamente, vamos explorar alguns comandos básicos do Docker que o ajudarão a gerenciar contêineres e imagens.
Executando um Contêiner Interativo
Ao contrário do contêiner hello-world que é executado e sai imediatamente, podemos executar contêineres de forma interativa. Vamos executar um contêiner Ubuntu e interagir com seu shell:
docker run -it ubuntu bash
Este comando:
-imantém STDIN aberto-taloca um pseudo-TTY (terminal)ubuntué o nome da imagembashé o comando a ser executado dentro do contêiner
Assim que o contêiner for iniciado, você estará em um prompt bash dentro do contêiner:
root@3f4d92618a09:/#
O prompt mostra que você está logado como root no contêiner. A string alfanumérica é o ID do contêiner.
Tente executar alguns comandos Linux dentro do contêiner:
cat /etc/os-release
Isso exibirá informações sobre a versão do Ubuntu em execução no contêiner:
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
Quando terminar de explorar, saia do contêiner digitando:
exit
Isso o retornará ao seu terminal host.
Gerenciamento do Ciclo de Vida do Contêiner
Vamos explorar como gerenciar o ciclo de vida de um contêiner. Primeiro, iniciaremos um contêiner no modo detached:
docker run -d --name web nginx
Este comando:
-dexecuta o contêiner no modo detached (em segundo plano)--name webatribui o nome "web" ao contêinernginxé a imagem a ser usada
Você verá um longo ID de contêiner impresso na tela.
Agora, vamos verificar se o contêiner está em execução:
docker ps
Você deve ver o contêiner nginx em execução:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d3f8c1f8a3d nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp web
Para parar o contêiner:
docker stop web
Verifique se ele foi parado:
docker ps
O contêiner não deve mais aparecer na lista de contêineres em execução. Para ver todos os contêineres, incluindo os parados:
docker ps -a
Você deve ver os contêineres nginx e hello-world no estado parado.
Para iniciar o contêiner novamente:
docker start web
E para remover um contêiner quando você não precisar mais dele:
docker stop web
docker rm web
Gerenciando Imagens Docker
Vamos explorar como gerenciar imagens Docker. Para listar todas as imagens:
docker images
Você deve ver pelo menos as imagens hello-world e nginx.
Para remover uma imagem quando você não precisar mais dela:
docker rmi hello-world
Observe que você não pode remover imagens que estão sendo usadas por contêineres (mesmo os parados). Você precisará remover esses contêineres primeiro.
Informações do Sistema Docker
Para verificar o espaço em disco usado pelo Docker (contêineres, imagens, volumes):
docker system df
Isso mostrará um resumo do uso do disco:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 1 187.8MB 187.8MB (99%)
Containers 2 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
Para obter informações mais detalhadas:
docker system df -v
Isso mostrará uma análise de cada imagem e contêiner e seus tamanhos.
Solucionando Problemas Comuns do Docker
Mesmo com um ambiente Docker devidamente instalado, você pode encontrar problemas durante o uso regular. Vamos explorar alguns problemas comuns do Docker e suas soluções.
Problema: Daemon Docker Não Está em Execução
Você pode pular esta etapa se já tiver iniciado o serviço Docker na etapa anterior.
Se você tentar executar um comando Docker e receber um erro como este:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Isso significa que o daemon Docker não está em execução. Para resolver isso:
- Verifique o status do serviço Docker:
sudo systemctl status docker
- Se não estiver em execução, inicie-o:
sudo systemctl start docker
- Se o serviço não iniciar, verifique os logs em busca de erros:
sudo journalctl -u docker
Vamos simular este problema e sua resolução:
## Primeiro, pare o serviço Docker para simular o problema
sudo systemctl stop docker
## Tente executar um comando Docker
docker ps
## Você verá o erro "Cannot connect"
## Agora reinicie o serviço para corrigi-lo
sudo systemctl start docker
## Verifique se o Docker está funcionando novamente
docker ps
Problema: Permissão Negada
Se você vir um erro como:
Got permission denied while trying to connect to the Docker daemon socket
Isso geralmente significa que seu usuário não tem permissão para acessar o socket Docker. A solução é adicionar seu usuário ao grupo docker:
sudo usermod -aG docker $USER
Após executar este comando, você normalmente precisaria sair e fazer login novamente para que as alterações entrassem em vigor. Como estamos em um ambiente de laboratório com o usuário labex que já possui as permissões adequadas, não precisamos realizar esta etapa.
Problema: Problemas de Espaço em Disco
O Docker pode consumir espaço em disco significativo ao longo do tempo com imagens, contêineres e volumes não utilizados. Se seu sistema estiver com pouco espaço em disco:
- Verifique o uso do disco Docker:
docker system df
- Remova recursos não utilizados:
## Remova todos os contêineres parados
docker container prune
## Remova todas as imagens não utilizadas
docker image prune
## Remova todos os volumes não utilizados
docker volume prune
## Ou remova tudo o que não for usado em um comando
docker system prune
Vamos demonstrar o comando de poda:
## Crie alguns contêineres que sairão imediatamente
docker run hello-world
docker run ubuntu echo "This will exit immediately"
## Agora pode contêineres parados
docker container prune
Você será solicitado a confirmar a operação:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Digite y para confirmar. Você deve ver a saída mostrando os contêineres removidos.
Problema: Contêiner Não Iniciando
Se um contêiner não iniciar, você pode investigar verificando seus logs:
## Primeiro, tente iniciar um contêiner que pode falhar
docker run --name failing-container ubuntu apt-get update
## Verifique os logs
docker logs failing-container
Você pode ver erros nos logs que indicam por que o contêiner falhou.
Problema: Problemas de Rede
Se os contêineres não conseguem se comunicar entre si ou com o mundo exterior:
- Verifique a configuração da rede do Docker:
docker network ls
- Inspecione uma rede específica:
docker network inspect bridge
- Teste a conectividade de dentro de um contêiner:
## Inicie um contêiner com rede
docker run -it ubuntu bash
## De dentro do contêiner, instale o ping
apt-get update && apt-get install -y iputils-ping
## Tente fazer ping em um site
ping google.com
## Saia do contêiner
exit
Logs e Depuração do Docker
Para solução de problemas geral do Docker, verificar os logs do daemon Docker pode ser útil:
sudo journalctl -u docker
Para os logs de um contêiner específico:
docker logs <container_id>
Você também pode obter um fluxo de logs em tempo real:
docker logs -f <container_id>
Essas técnicas de solução de problemas o ajudarão a diagnosticar e resolver a maioria dos problemas comuns do Docker.
Resumo
Neste laboratório, você aprendeu habilidades essenciais para verificar e gerenciar sua instalação do Docker:
- Verificando a versão do Docker e o status do daemon para confirmar a instalação adequada
- Executando contêineres de teste para verificar a funcionalidade do Docker
- Usando comandos básicos do Docker para gerenciar contêineres e imagens
- Explorando o gerenciamento do ciclo de vida do contêiner
- Solucionando problemas comuns do Docker
Essas habilidades fornecem uma base sólida para trabalhar com contêineres Docker. Agora você pode verificar com confiança se seu ambiente Docker está configurado corretamente e solucionar quaisquer problemas que possam surgir.
À medida que você continua sua jornada no Docker, pode construir sobre esses fundamentos para criar, implantar e gerenciar aplicativos em contêineres de forma eficiente.



