Como Implantar Contêineres Docker no Ubuntu

DockerBeginner
Pratique Agora

Introdução

Este tutorial abrangente do Docker fornece aos desenvolvedores e administradores de sistemas um guia fundamental para compreender e implementar tecnologias de contentores. Explorando os conceitos centrais, a arquitetura e a implementação prática do Docker, os aprendizes adquirirão competências essenciais na implantação de software moderno e na gestão de infraestruturas.

Conceitos Básicos do Docker

O que é o Docker?

O Docker é uma poderosa tecnologia de contentores que permite aos desenvolvedores empacotar, distribuir e executar aplicações de forma consistente em diferentes ambientes computacionais. Como ferramenta fundamental no desenvolvimento de software moderno, o Docker simplifica a implantação de aplicações e melhora a eficiência do sistema.

Conceitos Centrais da Contenção

A contenção permite que as aplicações sejam isoladas e executadas de forma independente com suas próprias dependências. Ao contrário das máquinas virtuais tradicionais, os contentores compartilham o kernel do sistema hospedeiro, tornando-os leves e rápidos.

graph TD A[Código da Aplicação] --> B[Contenedor Docker] B --> C[Kernel do Hospedeiro Compartilhado] B --> D[Ambiente Isolado]

Arquitetura do Docker

Componente Descrição
Daemon do Docker Serviço em segundo plano que gerencia os contentores
Cliente do Docker Interface de linha de comando para interagir com o Docker
Imagens do Docker Modelos somente leitura para criar contentores
Contentores do Docker Instâncias executáveis de imagens do 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 estável
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

Primeiro Exemplo de Contenedor Docker

## Baixar a imagem oficial do Ubuntu
docker pull ubuntu:latest

## Executar o contêiner interativo
docker run -it ubuntu:latest /bin/bash

## Dentro do contêiner, verificar o ambiente
cat /etc/os-release

Este exemplo demonstra como baixar uma imagem do Ubuntu e executar um contêiner interativo, mostrando a simplicidade do Docker na criação de ambientes isolados.

Gerenciamento de Contêineres

Operações do Ciclo de Vida do Contêiner

O Docker fornece comandos abrangentes para gerenciar o ciclo de vida dos contêineres, permitindo que os desenvolvedores criem, iniciem, parem e removam contêineres de forma eficiente.

graph LR A[Criar Contêiner] --> B[Iniciar Contêiner] B --> C[Contêiner em Execução] C --> D[Parar Contêiner] D --> E[Remover Contêiner]

Comandos Essenciais de Contêineres Docker

Comando Função Exemplo
docker create Criar um novo contêiner docker create ubuntu:latest
docker start Iniciar um contêiner parado docker start container_id
docker stop Parar um contêiner em execução docker stop container_id
docker rm Remover um contêiner docker rm container_id
docker ps Listar contêineres em execução docker ps
docker ps -a Listar todos os contêineres docker ps -a

Exemplo de Gerenciamento de Contêineres

## Criar um novo contêiner
docker create --name web_server nginx:latest

## Iniciar o contêiner
docker start web_server

## Listar contêineres em execução
docker ps

## Parar o contêiner
docker stop web_server

## Remover o contêiner
docker rm web_server

Gerenciamento de Recursos do Contêiner

## Executar contêiner com limites de recursos
docker run -d \
  --name limited_container \
  --memory=512m \
  --cpus=1.5 \
  nginx:latest

Este exemplo demonstra a definição de restrições de memória e CPU para um contêiner, garantindo a utilização controlada de recursos.

Inspeção Avançada de Contêineres

## Informações detalhadas do contêiner
docker inspect web_server

## Logs do contêiner
docker logs web_server

## Estatísticas do contêiner em tempo real
docker stats web_server

Técnicas Avançadas de Contêineres

Configuração de Rede de Contêineres

O Docker oferece opções de rede flexíveis para arquiteturas de aplicações complexas.

graph LR A[Rede do Hospedeiro] --> B[Rede Bridge] B --> C[Rede Personalizada] C --> D[Rede Overlay]

Tipos de Rede

Tipo de Rede Descrição Caso de Uso
Bridge Rede padrão Comunicação isolada entre contêineres
Hospedeiro Rede direta do hospedeiro Cenários de alto desempenho
Overlay Rede multi-hospedeiro Sistemas distribuídos

Criação de Rede Personalizada

## Criar rede personalizada
docker network create --driver bridge my_custom_network

## Executar contêiner na rede personalizada
docker run -d \
  --name web_app \
  --network my_custom_network \
  nginx:latest

Gerenciamento de Volumes

## Criar volume persistente
docker volume create app_data

## Montar volume no contêiner
docker run -d \
  --name database \
  -v app_data:/var/lib/database \
  postgres:latest

Orquestração de Contêineres com Docker Compose

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: secret

Monitoramento de Desempenho

## Métricas de contêiner em tempo real
docker stats

## Uso de recursos do contêiner
docker top container_name

## Perfilamento de desempenho
docker run \
  --rm \
  -it \
  --privileged \
  ubuntu:latest \
  perf top

Resumo

O Docker representa uma abordagem revolucionária para o empacotamento e implantação de aplicações, oferecendo soluções de contenção leves, portáteis e eficientes. Ao dominar as técnicas fundamentais do Docker, os desenvolvedores podem otimizar seu fluxo de trabalho, garantir ambientes consistentes e melhorar a escalabilidade do sistema em diferentes plataformas de computação.