Introdução
Este tutorial abrangente sobre Docker fornece aos desenvolvedores e profissionais de TI as competências essenciais para compreender a tecnologia de contentores. Explorando os conceitos centrais do Docker, a sua arquitetura e estratégias de implementação práticas, os aprendizes adquirirão conhecimentos práticos para otimizar a implantação de aplicações e melhorar os fluxos de trabalho de desenvolvimento de software.
Conceitos Básicos do Docker
Introdução ao Docker
Docker é uma plataforma poderosa para contentores, revolucionando o empacotamento e a implantação de software. Como uma tecnologia líder em contentores, o Docker permite que os desenvolvedores criem, implantem e executem aplicações de forma consistente em diferentes ambientes de computação.
Conceitos Centrais da Contenção
A contenção permite que as aplicações sejam agrupadas com todas as suas dependências, garantindo um desempenho uniforme em vários sistemas. Ao contrário das máquinas virtuais tradicionais, os contentores partilham o kernel do sistema hospedeiro, tornando-os leves e eficientes.
graph TD
A[Código da Aplicação] --> B[Contenedor Docker]
B --> C[Implantação Consistente]
B --> D[Ambiente Isolado]
Arquitetura Docker
| Componente | Descrição | Função |
|---|---|---|
| Docker Daemon | Serviço em segundo plano | Gerencia objetos Docker |
| Docker Client | Interface de linha de comandos | Envia comandos para o Docker daemon |
| Docker Registry | Armazenamento de imagens | Armazena e distribui imagens Docker |
Instalação no Ubuntu 22.04
## Atualizar o índice de pacotes
sudo apt update
## Instalar dependências
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Adicionar a chave GPG oficial do Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar o repositório Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar o Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Comandos Básicos do Docker
## Verificar a versão do Docker
docker --version
## Extrair uma imagem do Docker Hub
docker pull ubuntu:latest
## Listar imagens disponíveis
docker images
## Executar um contêiner
docker run -it ubuntu:latest /bin/bash
Principais Benefícios do Docker
A contenção através do Docker oferece vantagens significativas:
- Ambiente consistente entre desenvolvimento e produção
- Implantação rápida de aplicações
- Utilização eficiente de recursos
- Gestão simplificada de dependências
- Escalabilidade e portabilidade melhoradas
Ciclo de Vida do Contêiner
Estados e Gestão de Contêineres
Os contêineres Docker passam por vários estados durante o seu ciclo de vida, desde a criação até à terminação. Compreender estes estados é crucial para uma gestão e implantação eficaz de contêineres.
stateDiagram-v2
[*] --> Created
Created --> Running
Running --> Paused
Paused --> Running
Running --> Stopped
Stopped --> Removed
Removed --> [*]
Criação e Inicialização de Contêineres
## Extrair a imagem base
docker pull ubuntu:latest
## Criar e iniciar um contêiner
docker run -d --name mycontainer ubuntu:latest
## Executar um contêiner com terminal interativo
docker run -it ubuntu:latest /bin/bash
Comandos de Gestão de Contêineres
| Comando | Função | Exemplo |
|---|---|---|
| docker create | Criar um novo contêiner | docker create ubuntu:latest |
| docker start | Iniciar um contêiner parado | docker start mycontainer |
| docker stop | Parar um contêiner em execução | docker stop mycontainer |
| docker restart | Reiniciar um contêiner | docker restart mycontainer |
| docker pause | Pausar processos do contêiner | docker pause mycontainer |
| docker unpause | Despausar o contêiner | docker unpause mycontainer |
Estratégias de Implantação de Contêineres
## Implantar várias instâncias de contêineres
docker run -d --name web1 nginx
docker run -d --name web2 nginx
docker run -d --name web3 nginx
## Verificar contêineres em execução
docker ps
Escalonamento de Contêineres com Docker Compose
version: "3"
services:
webapp:
image: nginx
deploy:
replicas: 3
Gestão de Recursos
## Limitar recursos do contêiner
docker run -d --cpus=0.5 --memory=512m nginx
Remoção de Contêineres
## Remover contêiner parado
docker rm mycontainer
## Remover contêiner em execução à força
docker rm -f mycontainer
## Remover todos os contêineres parados
docker container prune
Melhores Práticas para Contêineres
Otimização do Dockerfile
## Usar tag de imagem específica
FROM ubuntu:22.04
## Minimizar o número de camadas
RUN apt-get update \
&& apt-get install -y python3 \
&& rm -rf /var/lib/apt/lists/*
## Usar builds multi-stage
FROM python:3.9-slim
COPY --from=builder /app /app
Estratégias de Monitorização de Contêineres
graph TD
A[Monitorização de Contêineres] --> B[Utilização de Recursos]
A --> C[Métricas de Desempenho]
A --> D[Registo]
Rastreio de Métricas de Desempenho
| Métrica | Comando | Finalidade |
|---|---|---|
| Utilização da CPU | docker stats |
Monitorizar o consumo do processador |
| Memória | docker top |
Acompanhar a alocação de memória |
| Rede | docker network inspect |
Analisar o desempenho da rede |
Melhores Práticas de Segurança
## Executar contêineres com privilégios mínimos
docker run --read-only --tmpfs /tmp nginx
## Limitar capacidades do contêiner
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
Verificações de Saúde do Contêiner
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f || exit 1
Registo e Depuração
## Inspecionar registos do contêiner
docker logs mycontainer
## Monitorização de registos em tempo real
docker logs -f mycontainer
## Inspeção detalhada do contêiner
docker inspect mycontainer
Gestão de Recursos
## Definir restrições de recursos
docker run -d \
--cpus=1 \
--memory=512m \
--memory-reservation=256m \
nginx
Princípios de Orquestração de Contêineres
version: "3"
services:
webapp:
image: myapp
deploy:
replicas: 3
restart_policy:
condition: on-failure
Resumo
O Docker revoluciona o desenvolvimento de software, oferecendo ambientes de contêiner leves, consistentes e portáveis. Este tutorial equipou-o com as competências fundamentais para instalar o Docker, gerir contêineres e tirar partido eficazmente das tecnologias de contencionalização em diferentes plataformas de computação. Dominando estas técnicas, os desenvolvedores podem melhorar a fiabilidade, escalabilidade e eficiência de implantação das aplicações.



