Como criar um contêiner Docker no Linux

DockerBeginner
Pratique Agora

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

  1. Construção: Crie uma imagem Docker a partir de um Dockerfile.
  2. Envio: Armazene a imagem Docker em um repositório, como o Docker Hub.
  3. 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

  1. Atualize o índice de pacotes:
sudo apt-get update
  1. Instale os pacotes necessários para permitir que o apt utilize um repositório via HTTPS:
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 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
  1. 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
  1. 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

  1. Verifique a instalação do Docker:
sudo docker run hello-world
  1. Adicione seu usuário ao grupo Docker para executar comandos Docker sem sudo:
sudo usermod -aG docker $USER
  1. Configure o Docker para iniciar automaticamente na inicialização do sistema:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
  1. (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"
}
  1. Reinicie o serviço Docker:
sudo systemctl restart docker

Instalação do Docker Compose

  1. 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
  1. Faça o binário executável:
sudo chmod +x /usr/local/bin/docker-compose
  1. Verifique a instalação do Docker Compose:
docker-compose --version

Construindo e Executando Contêineres Docker

Construindo Imagens Docker

  1. Crie um novo diretório para seu projeto:
mkdir my-docker-project
cd my-docker-project
  1. Crie um arquivo Dockerfile no diretório do projeto:
touch Dockerfile
  1. Abra o arquivo Dockerfile e 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;"]
  1. 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;
    }
}
  1. Construa a imagem Docker:
docker build -t my-nginx-app .

Executando Contêineres Docker

  1. Execute o contêiner Docker:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
  1. Verifique se o contêiner está em execução:
docker ps
  1. Acesse o servidor web Nginx em execução no contêiner:
curl http://localhost

Gerenciando Contêineres Docker

  1. Pare o contêiner em execução:
docker stop my-nginx-app
  1. Inicie o contêiner parado:
docker start my-nginx-app
  1. Remova o contêiner:
docker rm my-nginx-app
  1. Remova a imagem Docker:
docker rmi my-nginx-app

Docker Compose

  1. Crie um arquivo docker-compose.yml:
version: '3'
services:
  web:
    build: .
    ports:
     - "80:80"
  1. Construa e execute a aplicação Docker Compose:
docker-compose up -d
  1. 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.