Introdução
A CLI do Docker é uma ferramenta poderosa que permite aos desenvolvedores interagir com contêineres, imagens e redes Docker através de interfaces de linha de comando. Este tutorial abrangente guiará você pelas técnicas essenciais da CLI do Docker, ajudando você a entender como gerenciar e manipular contêineres de forma eficiente, construir ambientes de desenvolvimento robustos e otimizar seu fluxo de trabalho de contencionalização.
Noções Básicas da CLI do Docker
O que é a CLI do Docker?
A Interface de Linha de Comando (CLI) do Docker é uma ferramenta poderosa que permite aos utilizadores interagir com o daemon do Docker e gerir contêineres, imagens, redes e volumes. Fornece uma interface baseada em texto para executar comandos do Docker e realizar várias operações.
Instalação e Configuração
Antes de utilizar a CLI do Docker, certifique-se de que o Docker está instalado no seu sistema Ubuntu 22.04:
## Atualizar o índice de pacotes
sudo apt update
## Instalar o Docker
sudo apt install docker.io
## Verificar a instalação
docker --version
Estrutura Básica da CLI do Docker
Os comandos da CLI do Docker seguem uma sintaxe padrão:
docker <objeto> <comando> <opções>
Categorias de Comandos
| Categoria | Finalidade |
|---|---|
| Comandos de Gestão | Gerir objetos Docker |
| Comandos de Imagem | Extrair, construir e gerir imagens |
| Comandos de Contêiner | Criar, executar e controlar contêineres |
| Comandos de Rede | Configurar redes Docker |
| Comandos de Volume | Gerir armazenamento de dados persistentes |
Autenticação e Permissões
graph TD
A[Utilizador] --> B{CLI do Docker}
B --> |Requer Sudo| C[Permissões de Root]
B --> |Grupo de Utilizadores| D[Acesso ao Grupo Docker]
Para evitar usar o sudo em cada comando, adicione o seu utilizador ao grupo docker:
## Adicionar o utilizador atual ao grupo docker
sudo usermod -aG docker $USER
## Reiniciar a sessão
newgrp docker
Configuração da CLI do Docker
Os ficheiros de configuração normalmente encontram-se em:
/etc/docker/daemon.json(global)~/.docker/config.json(específico do utilizador)
Conceitos-chave
- Daemon do Docker: Serviço em segundo plano que gere objetos Docker
- Cliente do Docker: Ferramenta CLI para interagir com o daemon
- Objetos Docker: Imagens, Contêineres, Redes, Volumes
Compreendendo estes fundamentos, os utilizadores podem tirar partido eficazmente da CLI do Docker para tarefas de contencionalização. O LabEx recomenda a prática destes comandos fundamentais para construir uma base sólida na gestão do Docker.
Comandos Docker Comuns
Comandos de Gestão de Imagens
Extraindo Imagens
## Extrair uma imagem do Docker Hub
docker pull ubuntu:latest
docker pull nginx:1.21
Listando Imagens
## Listar todas as imagens locais
docker images
docker image ls
Construindo Imagens
## Construir imagem a partir do Dockerfile
docker build -t myapp:v1 .
Operações com Contêineres
Executando Contêineres
## Executar um novo contêiner
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
Comandos de Gestão de Contêineres
| Comando | Descrição | Exemplo |
|---|---|---|
docker ps |
Listar contêineres em execução | docker ps |
docker ps -a |
Listar todos os contêineres | docker ps -a |
docker start |
Iniciar contêiner parado | docker start web-server |
docker stop |
Parar contêiner em execução | docker stop web-server |
docker rm |
Remover contêiner | docker rm web-server |
Comandos de Rede
graph TD
A[Comandos de Rede Docker]
A --> B[Criar Rede]
A --> C[Listar Redes]
A --> D[Inspecionar Rede]
Operações com Redes
## Criar uma rede personalizada
docker network create mynetwork
## Listar redes
docker network ls
## Conectar contêiner à rede
docker network connect mynetwork web-server
Gestão de Volumes
## Criar um volume
docker volume create mydata
## Listar volumes
docker volume ls
## Montar volume no contêiner
docker run -v mydata:/app nginx
Depuração e Inspeção
## Visualizar logs do contêiner
docker logs web-server
## Executar comando num contêiner em execução
docker exec -it web-server bash
## Inspecionar detalhes do contêiner
docker inspect web-server
Comandos Avançados
Limpeza
## Remover imagens não utilizadas
docker image prune
## Remover todos os contêineres parados
docker container prune
Boas Práticas
- Utilize sempre tags de imagem específicas.
- Remova contêineres e imagens desnecessários.
- Utilize volumes para dados persistentes.
- Utilize o isolamento de rede.
O LabEx recomenda dominar estes comandos comuns da CLI do Docker para gerir eficientemente ambientes contencionalizados.
Padrões de Fluxo de Trabalho CLI
Fluxo de Trabalho de Desenvolvimento
graph TD
A[Desenvolvimento de Código] --> B[Construir Imagem Docker]
B --> C[Testar Contêiner]
C --> D[Publicar no Registro]
D --> E[Implantar Contêiner]
Ciclo de Desenvolvimento Típico
## Clonar projeto
git clone https://github.com/example/project
## Criar Dockerfile
touch Dockerfile
## Construir imagem
docker build -t myapp:dev .
## Executar contêiner para testes
docker run -d --name test-container myapp:dev
Fluxo de Trabalho de Integração Contínua
Construção e Teste
## Construir imagem com argumentos de construção
docker build --build-arg ENV=development -t myapp:ci .
## Executar testes automatizados
docker run --rm myapp:ci npm test
Gestão do Ciclo de Vida do Contêiner
Etapas do Fluxo de Trabalho
| Etapa | Comando Docker | Finalidade |
|---|---|---|
| Construção | docker build |
Criar imagem |
| Teste | docker run |
Validar contêiner |
| Publicação | docker push |
Partilhar imagem |
| Implementação | docker run |
Executar em produção |
Implementação Multi-Contêiner
Fluxo de Trabalho do Docker Compose
## Definir serviços em docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8000:80"
database:
image: postgres:latest
## Iniciar ambiente multi-contêiner
docker-compose up -d
Padrão de Microserviços
graph TD
A[Serviço API] --> B[Serviço de Base de Dados]
A --> C[Serviço de Cache]
A --> D[Serviço de Autenticação]
Gestão de Serviços
## Criar rede para microserviços
docker network create microservices-net
## Executar serviços com ligação à rede
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb
Fluxo de Trabalho de Depuração
Passos de Solução de Problemas
## Inspecionar logs do contêiner
docker logs api-service
## Executar shell interativo
docker exec -it api-service /bin/bash
## Verificar utilização de recursos do contêiner
docker stats api-service
Fluxo de Trabalho de Implementação de Produção
Estratégia de Etiquetagem de Imagens
## Etiquetar imagem para produção
docker tag myapp:latest myregistry.com/myapp:v1.0
## Publicar no registo privado
docker push myregistry.com/myapp:v1.0
## Extrair e executar em produção
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0
Boas Práticas
- Utilize tags de imagem específicas.
- Implemente construções multi-etapas.
- Minimize o tamanho da imagem.
- Utilize o Docker Compose para configurações complexas.
O LabEx recomenda a prática destes padrões de fluxo de trabalho para otimizar a gestão e implantação de contêineres Docker.
Resumo
Dominando os comandos da CLI do Docker e os padrões de fluxo de trabalho, os desenvolvedores podem aprimorar significativamente suas habilidades de gerenciamento de contêineres. Este tutorial equipou você com técnicas fundamentais para navegar, criar, gerenciar e otimizar contêineres Docker, permitindo que você explore todo o potencial do Docker em cenários modernos de desenvolvimento e implantação de software.



