Como executar o primeiro contêiner Docker

DockerBeginner
Pratique Agora

Introdução

O Docker é uma plataforma poderosa que revoluciona o desenvolvimento e implantação de software através da tecnologia de contentores. Este tutorial fornece um guia abrangente para desenvolvedores e profissionais de TI para compreender os fundamentos do Docker e executar com sucesso o seu primeiro contêiner, permitindo ambientes de aplicação eficientes e consistentes em diferentes sistemas.

Fundamentos do Docker

O que é o Docker?

O Docker é uma plataforma de código aberto que permite aos desenvolvedores automatizar a implantação, escalonamento e gerenciamento de aplicações através da contencionalização. Ele fornece um ambiente leve, portátil e autossuficiente para executar aplicações.

Conceitos Principais

Contêineres

Contêineres são pacotes executáveis, leves e autônomos que incluem tudo o que é necessário para executar uma aplicação: código, tempo de execução, ferramentas de sistema, bibliotecas e configurações.

graph LR A[Código da Aplicação] --> B[Contêiner] C[Dependências] --> B D[Ambiente de Tempo de Execução] --> B

Imagens Docker

Imagens Docker são modelos de leitura-somente usados para criar contêineres. Elas servem como base para a criação de contêineres e podem ser armazenadas em repositórios como o Docker Hub.

Arquitetura Docker

Componente Descrição
Cliente Docker Interface de linha de comando para interagir com o Docker
Demônio Docker Serviço em segundo plano que gerencia objetos Docker
Registro Docker Sistema de armazenamento e distribuição de imagens Docker

Principais Vantagens

  1. Consistência: Garante ambientes idênticos entre desenvolvimento e produção
  2. Isolamento: Separa aplicações e suas dependências
  3. Eficiência: Leve em comparação com máquinas virtuais tradicionais
  4. Escalabilidade: Fácil escalonamento horizontal de aplicações

Casos de Uso

  • Implantação de microserviços
  • Integração Contínua/Entrega Contínua (CI/CD)
  • Desenvolvimento de aplicações nativas de nuvem
  • Ambientes de desenvolvimento e teste

Começando com o LabEx

Para aprendizado prático e experiência com o Docker, o LabEx fornece ambientes interativos para ajudá-lo a dominar as tecnologias de contencionalização.

Docker vs. Virtualização Tradicional

graph TD A[Virtualização Tradicional] --> B[Sistema Operacional completo para cada aplicação] A --> C[Alto Custo de Recursos] D[Contencialização Docker] --> E[Kernel de SO compartilhado] D --> F[Contêineres Leves]

Compreendendo esses fundamentos, você estará bem preparado para mergulhar no Docker e aproveitar seus poderosos recursos de contencionalização.

Configuração e Instalação

Requisitos do Sistema

Antes de instalar o Docker, certifique-se que o seu sistema Ubuntu 22.04 atende aos seguintes requisitos:

  • Sistema operacional de 64 bits
  • Kernel Linux 3.10 ou superior
  • Mínimo de 2 GB de RAM
  • Espaço de disco suficiente

Métodos de Instalação

Método 1: Repositório Oficial do Docker

## Atualizar índice de pacotes
sudo apt-get update

## Instalar pacotes necessários
sudo apt-get install ca-certificates curl gnupg lsb-release

## Adicionar a chave GPG oficial do Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | 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] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Instalar o Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Método 2: Script de Conveniência

## Baixar e executar o script de instalação do Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Configuração Pós-Instalação

Configuração do Grupo de Usuários

## Adicionar o usuário atual ao grupo docker
sudo usermod -aG docker $USER

## Verificar a instalação
docker --version

Arquivos de Configuração do Docker

Caminho do Arquivo Finalidade
/etc/docker/daemon.json Configuração do daemon Docker
~/.docker/config.json Configurações do Docker específicas do usuário

Instalação do Docker Compose

## Baixar o Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## Aplicar permissões executáveis
sudo chmod +x /usr/local/bin/docker-compose

## Verificar a instalação
docker-compose --version

Fluxo de Verificação

graph TD A[Instalar Docker] --> B[Adicionar Usuário ao Grupo Docker] B --> C[Verificar Versão do Docker] C --> D[Executar Contêiner de Teste] D --> E[Confirmar Configuração Bem-Sucedida]

Testando a Instalação do Docker

## Executar o contêiner hello-world
sudo docker run hello-world

Recomendação do LabEx

Para um aprendizado abrangente e prático do Docker, o LabEx oferece ambientes interativos que o guiam por meio de configurações e casos de uso práticos do Docker.

Solução de Problemas Comuns

  • Reiniciar o serviço Docker: sudo systemctl restart docker
  • Verificar o status do Docker: sudo systemctl status docker
  • Verificar a conectividade de rede: docker info

Executando o Primeiro Contêiner

Comandos Básicos do Docker

Puxando uma Imagem

## Puxar a imagem Ubuntu do Docker Hub
docker pull ubuntu:latest

Comandos do Ciclo de Vida do Contêiner

Comando Descrição
docker run Criar e iniciar um novo contêiner
docker ps Listar contêineres em execução
docker ps -a Listar todos os contêineres
docker start Iniciar um contêiner parado
docker stop Parar um contêiner em execução

Execução Interativa de Contêiner

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

Modos de Contêiner

graph LR A[Modos de Contêiner] --> B[Modo Interativo] A --> C[Modo Desacoplado] A --> D[Modo em Primeiro Plano] A --> E[Modo de Fundo]

Exemplo de Modo Desacoplado

## Executar o servidor web Nginx em segundo plano
docker run -d -p 80:80 nginx:latest

Mapeamento de Portas

## Mapear a porta do contêiner para a porta do host
docker run -d -p 8080:80 nginx:latest

Montagem de Volumes

## Montar o diretório do host no contêiner
docker run -v /host/path:/container/path ubuntu:latest

Variáveis de Ambiente

## Definir variáveis de ambiente
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest

Gerenciamento de Contêineres

## Remover um contêiner
docker rm container_name

## Remover todos os contêineres parados
docker container prune

Operações Avançadas de Contêineres

Inspecionando Contêineres

## Visualizar detalhes do contêiner
docker inspect container_name

## Verificar logs do contêiner
docker logs container_name

Boas Práticas

  1. Usar imagens oficiais
  2. Manter contêineres leves
  3. Usar tags de imagem específicas
  4. Implementar limites de recursos adequados

Recomendação de Aprendizado do LabEx

O LabEx fornece tutoriais abrangentes de gerenciamento de contêineres Docker para ajudá-lo a dominar as habilidades práticas de contêineres.

Fluxo de Trabalho do Contêiner

graph TD A[Puxar Imagem] --> B[Criar Contêiner] B --> C[Iniciar Contêiner] C --> D[Interagir/Utilizar Contêiner] D --> E[Parar Contêiner] E --> F[Remover Contêiner]

Cenários Comuns

Cenário Comando Docker
Servidor Web docker run -d -p 80:80 nginx
Banco de Dados docker run -d mysql:latest
Aplicativo Python docker run -it python:3.9

Dicas de Solução de Problemas

  • Verificar o status do contêiner: docker ps
  • Visualizar logs do contêiner: docker logs
  • Reiniciar o contêiner: docker restart

Resumo

Seguindo este tutorial, você aprendeu os passos essenciais para configurar o Docker, configurar seu ambiente e executar seu primeiro contêiner. O Docker oferece uma solução robusta para empacotamento, distribuição e implantação de aplicativos, permitindo que desenvolvedores criem soluções de software portáteis e escaláveis com mínima configuração e máxima consistência em diferentes ambientes de computação.