Curso Docker Containers Administration
24 horasVisão Geral
Docker é uma plataforma de código aberto que automatiza a implantação, escala e gerenciamento de aplicações dentro de contêineres. Ele utiliza a virtualização no nível do sistema operacional para empacotar software em unidades padronizadas (contêineres) que incluem tudo o que a aplicação precisa para funcionar: código, runtime, ferramentas de sistema, bibliotecas e configurações. Isso garante que a aplicação seja executada de forma consistente em qualquer ambiente, eliminando problemas de "funciona na minha máquina".
Componentes Fundamentais do Docker
A arquitetura do Docker é composta por alguns elementos chave:
- Docker Engine: É o coração do Docker. Inclui:
- Docker Daemon (dockerd): Um processo de servidor persistente que gerencia objetos Docker como imagens, contêineres, volumes e redes. Ele escuta requisições da API Docker.
- Docker CLI (Client): A interface de linha de comando que permite aos usuários interagir com o Docker Daemon.
- API REST: Uma interface programática para que aplicações e scripts possam interagir com o Docker Daemon.
- Dockerfile: Um script de texto que contém instruções para construir uma imagem Docker. Cada instrução no Dockerfile cria uma nova camada na imagem, promovendo a reutilização e o cache.
- Imagens Docker: Um template leve, standalone e executável que inclui tudo o que é necessário para executar uma aplicação (código, runtime, libs, etc.). Imagens são construídas a partir de Dockerfiles e são a base para a criação de contêineres.
- Contêineres Docker: Instâncias executáveis de uma imagem Docker. São ambientes isolados que compartilham o kernel do sistema operacional host, mas possuem seu próprio sistema de arquivos, processos, redes e namespace.
- Docker Registry: Um repositório para armazenar e distribuir imagens Docker. O mais conhecido é o Docker Hub (registro público), mas é possível ter registros privados (ex: Harbor, AWS ECR, Google GCR).
- Volumes Docker: Mecanismos para persistir dados gerados ou usados por contêineres. Podem ser bind mounts (mapeiam um diretório do host) ou named volumes (gerenciados pelo Docker, ideal para dados de banco de dados).
- Redes Docker: Permitem a comunicação entre contêineres e entre contêineres e o host. Os principais drivers de rede incluem bridge (padrão para contêineres isolados ou grupos de contêineres em uma rede definida pelo usuário), host (contêiner compartilha a pilha de rede do host) e overlay (para comunicação entre hosts em um Docker Swarm).
Objetivo
Ao final deste curso, os participantes serão capazes de:
- Compreender os conceitos fundamentais de contêineres e Docker.
- Instalar e configurar o Docker em diferentes ambientes (Linux, Windows).
- Gerenciar imagens Docker: construir, baixar, versionar e remover.
- Executar e gerenciar contêineres: iniciar, parar, inspecionar, remover.
- Trabalhar com volumes para persistência de dados em contêineres.
- Configurar redes Docker para comunicação entre contêineres e com o host.
- Utilizar o Dockerfile para construir imagens customizadas e otimizadas.
- Orquestrar múltiplos contêineres usando Docker Compose para ambientes de desenvolvimento e teste.
- Implementar boas práticas de segurança para contêineres Docker.
- Monitorar e solucionar problemas em ambientes Docker.
- Compreender a base para avançar para orquestradores como Kubernetes.
Publico Alvo
- Administradores de Sistemas e Engenheiros de Infraestrutura.
- Desenvolvedores de Software que desejam containerizar suas aplicações.
- Engenheiros DevOps e SREs.
- Profissionais de TI que buscam modernizar sua infraestrutura.
- Estudantes e entusiastas de tecnologia que desejam aprender sobre contêineres.
Pre-Requisitos
- Conhecimento básico de linha de comando Linux.
- Noções de redes (IP, portas).
- Um computador com acesso à internet e privilégios de administrador para instalar o Docker.
Materiais
Inglês/Português/Lab PráticoConteúdo Programatico
Módulo 1: Introdução a Contêineres e Docker (4 horas)
- 1.1. O Problema da Dependência: Máquinas Virtuais vs. Contêineres.
- 1.2. O que são Contêineres? Conceitos-chave (isolamento, leveza, portabilidade).
- 1.3. O que é Docker? Arquitetura (Daemon, Client, Registry).
- 1.4. Instalação do Docker:
- No Linux (Ubuntu/CentOS).
- No Windows (Docker Desktop).
- 1.5. Primeiro Contêiner:
docker run hello-world
. - Laboratório Prático: Instalação do Docker e execução de contêineres básicos.
Módulo 2: Gerenciamento de Imagens Docker (4 horas)
- 2.1. O que são Imagens Docker? Camadas (layers) e Union File Systems.
- 2.2. Docker Hub: Explorando e baixando imagens (
docker pull
). - 2.3. Gerenciamento de Imagens:
- Listar imagens (
docker images
). - Remover imagens (
docker rmi
). - Inspecionar imagens (
docker inspect
).
- Listar imagens (
- 2.4. Tags de Imagem: Versionamento e organização.
- 2.5. Cache de Imagens: Otimização para download.
- Laboratório Prático: Baixar, listar, inspecionar e remover diferentes imagens.
Módulo 3: Gerenciamento de Contêineres (4 horas)
- 3.1. Ciclo de Vida do Contêiner: Criar, iniciar, parar, pausar, reiniciar, remover.
- 3.2. Executando Contêineres:
docker run
(explorando opções:-d
,-p
,--name
,--rm
,-it
).- Anexar a um contêiner (
docker attach
). - Executar comandos dentro de um contêiner (
docker exec
).
- 3.3. Listar Contêineres:
docker ps
,docker ps -a
. - 3.4. Logs de Contêineres:
docker logs
. - 3.5. Informações Detalhadas:
docker inspect container_id
. - 3.6. Monitoramento Básico:
docker stats
. - Laboratório Prático: Criação e gerenciamento de contêineres web (nginx, apache), acesso e monitoramento.
Módulo 4: Persistência de Dados e Volumes (4 horas)
- 4.1. O Problema dos Dados Voláteis: Por que precisamos de persistência?
- 4.2. Tipos de Volumes Docker:
- Bind Mounts: Mapeamento de diretórios do host.
- Volumes Nomeados (Named Volumes): Gerenciados pelo Docker.
- tmpfs mounts: Para dados temporários na memória.
- 4.3. Gerenciamento de Volumes:
- Criar, listar, inspecionar e remover volumes.
- 4.4. Uso de Volumes com Aplicações: Bancos de dados (MySQL, PostgreSQL).
- Laboratório Prático: Configurar volumes para persistir dados de aplicações web e bancos de dados.
Módulo 5: Redes Docker (4 horas)
- 5.1. Conceitos Básicos de Rede em Contêineres: IP, Portas, Mapeamento de Portas.
- 5.2. Drivers de Rede Docker:
- Bridge (Padrão): Entendendo a rede padrão e comunicação entre contêineres na mesma bridge.
- Host: Contêineres compartilham a rede do host.
- None: Sem interface de rede.
- Overlay: (Breve introdução para swarm/cluster - foco em comunicação básica).
- 5.3. Redes Definidas pelo Usuário: Criar e gerenciar redes personalizadas.
- 5.4. DNS Interno do Docker: Descoberta de serviços entre contêineres.
- 5.5. Expondo Aplicações para o Exterior: Mapeamento de portas (
-p
). - Laboratório Prático: Criar redes personalizadas, conectar contêineres em diferentes redes e testar a comunicação.
Módulo 6: Dockerfile e Docker Compose (4 horas)
- 6.1. Dockerfile: Construindo Imagens Customizadas:
- Sintaxe básica:
FROM
,RUN
,COPY
,ADD
,WORKDIR
,EXPOSE
,CMD
,ENTRYPOINT
. - Boas práticas para otimização de Dockerfiles (multi-stage builds, cache de camadas).
- Sintaxe básica:
- 6.2. Docker Build: Construindo imagens localmente.
- 6.3. Docker Compose: Orquestração de Aplicações Multi-Contêineres:
- Conceitos e casos de uso.
- Sintaxe do
docker-compose.yml
(services, networks, volumes). - Comandos
docker-compose up
,down
,start
,stop
,ps
,logs
.
- 6.4. Projeto Prático Final: Construir e orquestrar uma aplicação web multi-camadas (ex: Nginx + Node.js/Python + Banco de Dados) usando Dockerfile e Docker Compose.
- Laboratório Prático: Criar Dockerfiles para aplicações simples, construir imagens, e montar uma aplicação completa com Docker Compose.