Como usar eficazmente a CLI do Docker

DockerBeginner
Pratique Agora

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

  1. Daemon do Docker: Serviço em segundo plano que gere objetos Docker
  2. Cliente do Docker: Ferramenta CLI para interagir com o daemon
  3. 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

  1. Utilize sempre tags de imagem específicas.
  2. Remova contêineres e imagens desnecessários.
  3. Utilize volumes para dados persistentes.
  4. 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

  1. Utilize tags de imagem específicas.
  2. Implemente construções multi-etapas.
  3. Minimize o tamanho da imagem.
  4. 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.