Introdução
Docker é uma poderosa plataforma de contentores que revolucionou a forma como desenvolvedores e profissionais de TI gerenciam e implantam aplicações. Neste tutorial, guiaremos você pelo processo de criação de um contêiner Docker em um sistema Linux, desde a instalação e configuração do Docker até a construção e execução de seus próprios contêineres personalizados.
Compreendendo Contêineres Docker
Docker é uma plataforma de código aberto popular que permite aos desenvolvedores construir, implantar e executar aplicações em um ambiente de contentores. Os contêineres são pacotes de software leves, autônomos e executáveis que incluem tudo o que é necessário para executar uma aplicação, incluindo o código, o tempo de execução, as ferramentas de sistema e as bibliotecas.
O que é um Contêiner Docker?
Um contêiner Docker é uma unidade de software padronizada que empacota o código e todas as suas dependências, de modo que a aplicação execute de forma rápida e confiável de um ambiente computacional para outro. Os contêineres são criados a partir de imagens Docker, que são os projetos para a criação de contêineres. Os contêineres Docker são isolados uns dos outros e do sistema operacional hospedeiro, fornecendo um ambiente de tempo de execução consistente e previsível.
Benefícios dos Contêineres Docker
- Portabilidade: Os contêineres Docker podem ser executados em qualquer máquina que tenha o Docker instalado, independentemente da infraestrutura ou sistema operacional subjacente.
- Consistência: Os contêineres Docker garantem que a aplicação execute da mesma forma, independentemente do ambiente.
- Eficiência: Os contêineres Docker são leves e usam menos recursos do que máquinas virtuais, pois compartilham o kernel do sistema operacional hospedeiro.
- Escalabilidade: Os contêineres Docker podem ser facilmente escalonados para cima ou para baixo, facilitando a gestão e implantação de aplicações.
- Isolamento: Os contêineres Docker são isolados uns dos outros e do sistema operacional hospedeiro, melhorando a segurança e a estabilidade.
Arquitetura de Contêiner Docker
graph TD
A[Host Docker] --> B[Docker Engine]
B --> C[Imagens Docker]
B --> D[Contêineres Docker]
D --> E[Aplicação]
D --> F[Bibliotecas]
D --> G[Ferramentas de Sistema]
Ciclo de Vida de um Contêiner Docker
- Construção: Crie uma imagem Docker a partir de um Dockerfile.
- Envio: Armazene a imagem Docker em um repositório, como o Docker Hub.
- Execução: Crie e execute um contêiner Docker a partir da imagem.
Casos de Uso de Contêineres Docker
- Microserviços: Os contêineres Docker são adequados para a construção e implantação de aplicações baseadas em microserviços.
- Integração Contínua e Implantação Contínua: Os contêineres Docker podem ser usados para automatizar a construção, teste e implantação de aplicações.
- Hospedagem em Nuvem: Os contêineres Docker podem ser facilmente implantados e escalonados em plataformas em nuvem, como AWS, Azure e Google Cloud.
- Aprendizado de Máquina e Ciência de Dados: Os contêineres Docker podem ser usados para empacotar e implantar modelos de aprendizado de máquina e pipelines de processamento de dados.
Instalando e Configurando o Docker no Linux
Instalando o Docker no Ubuntu 22.04
- Atualize o índice de pacotes:
sudo apt-get update
- Instale os pacotes necessários para permitir que o
aptutilize um repositório via HTTPS:
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- Adicione a chave GPG oficial do Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Configure o repositório do Docker:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Instale o Docker Engine, containerd e Docker Compose:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Configurando o Docker
- Verifique a instalação do Docker:
sudo docker run hello-world
- Adicione seu usuário ao grupo Docker para executar comandos Docker sem
sudo:
sudo usermod -aG docker $USER
- Configure o Docker para iniciar automaticamente na inicialização do sistema:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
- (Opcional) Configure o Docker para usar um driver de armazenamento diferente:
sudo vi /etc/docker/daemon.json
Adicione a seguinte configuração e salve o arquivo:
{
"storage-driver": "overlay2"
}
- Reinicie o serviço Docker:
sudo systemctl restart docker
Instalação do Docker Compose
- Baixe a versão mais recente do Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Faça o binário executável:
sudo chmod +x /usr/local/bin/docker-compose
- Verifique a instalação do Docker Compose:
docker-compose --version
Construindo e Executando Contêineres Docker
Construindo Imagens Docker
- Crie um novo diretório para seu projeto:
mkdir my-docker-project
cd my-docker-project
- Crie um arquivo
Dockerfileno diretório do projeto:
touch Dockerfile
- Abra o arquivo
Dockerfilee adicione o seguinte conteúdo:
## Use a imagem oficial do Ubuntu 22.04 como base
FROM ubuntu:22.04
## Atualize o índice de pacotes e instale os pacotes necessários
RUN apt-get update && apt-get install -y \
nginx \
curl \
&& rm -rf /var/lib/apt/lists/*
## Copie o arquivo de configuração padrão do Nginx
COPY default.conf /etc/nginx/conf.d/
## Expõe a porta 80 para o Nginx
EXPOSE 80
## Inicie o Nginx quando o contêiner for iniciado
CMD ["nginx", "-g", "daemon off;"]
- Crie um arquivo de configuração padrão do Nginx,
default.conf:
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- Construa a imagem Docker:
docker build -t my-nginx-app .
Executando Contêineres Docker
- Execute o contêiner Docker:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
- Verifique se o contêiner está em execução:
docker ps
- Acesse o servidor web Nginx em execução no contêiner:
curl http://localhost
Gerenciando Contêineres Docker
- Pare o contêiner em execução:
docker stop my-nginx-app
- Inicie o contêiner parado:
docker start my-nginx-app
- Remova o contêiner:
docker rm my-nginx-app
- Remova a imagem Docker:
docker rmi my-nginx-app
Docker Compose
- Crie um arquivo
docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "80:80"
- Construa e execute a aplicação Docker Compose:
docker-compose up -d
- Pare e remova a aplicação Docker Compose:
docker-compose down
Resumo
Ao final deste tutorial, você terá um sólido entendimento do Docker e suas capacidades, bem como as habilidades práticas para criar, gerenciar e executar contêineres Docker em um sistema Linux. Este conhecimento o capacitará a otimizar o seu processo de implantação de aplicações, melhorar a escalabilidade e aprimorar seu fluxo de trabalho geral de DevOps.



