Como Configurar Contêineres Docker no Ubuntu

DockerBeginner
Pratique Agora

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.