Como Instalar e Executar Contêineres Docker no Ubuntu

DockerBeginner
Pratique Agora

Introdução

Este tutorial abrangente do Docker fornece aos desenvolvedores e administradores de sistemas o conhecimento essencial para implementar a tecnologia de contêineres. Ao abordar conceitos fundamentais do Docker, procedimentos de instalação e exemplos práticos, os aprendizes adquirirão habilidades práticas na implantação moderna de software e técnicas de virtualização.

Fundamentos do Docker

Introdução aos Fundamentos do Docker

O Docker é uma poderosa tecnologia de contêineres que revoluciona a implantação de software e a virtualização de aplicativos. Ele permite que os desenvolvedores empacotem aplicativos com todas as suas dependências em unidades padronizadas chamadas contêineres.

Conceitos Principais da Tecnologia de Contêineres

graph LR A[Imagem Docker] --> B[Contêiner] B --> C[Implantação do Aplicativo] B --> D[Isolamento]
Conceito Descrição
Imagem Docker Pacote executável leve e autônomo
Contêiner Instância executável de uma imagem
Dockerfile Script que define a configuração da imagem

Arquitetura Básica do Docker

Os contêineres fornecem virtualização leve compartilhando o kernel do sistema host, ao mesmo tempo que mantêm o isolamento do aplicativo. Essa abordagem difere das máquinas virtuais tradicionais.

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 do Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Configurar o repositório
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 Contêiner Docker

## Extrair a imagem Ubuntu
docker pull ubuntu:latest

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

## Dentro do contêiner
apt update
apt install nginx -y
exit

Configuração do Ambiente Docker

Preparando o Ubuntu 22.04 para Instalação do Docker

graph LR A[Atualização do Sistema] --> B[Instalação de Dependências] B --> C[Configuração do Repositório Docker] C --> D[Instalação do Docker Engine] D --> E[Configuração do Docker]

Requisitos do Sistema

Requisito Especificação
SO Ubuntu 22.04 LTS
Arquitetura 64 bits
Kernel 5.10+
RAM Mínimo 2 GB

Script de Instalação Completo do Docker

## Atualizar pacotes do sistema
sudo apt update && sudo apt upgrade -y

## Remover pacotes conflitantes
sudo apt remove docker docker-engine docker.io containerd runc

## Instalar dependências necessárias
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

## 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 -y docker-ce docker-ce-cli containerd.io

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

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

## Criar o grupo de usuários docker
sudo groupadd docker

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

## Habilitar o serviço Docker
sudo systemctl enable docker.service
sudo systemctl start docker.service

## Verificar a funcionalidade do docker
docker run hello-world

Instalação do Docker Compose

## Baixar o Docker Compose
sudo curl -L " -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

Gerenciamento de Contêineres

Visão Geral do Ciclo de Vida do Contêiner

graph LR A[Extração da Imagem] --> B[Criação do Contêiner] B --> C[Início do Contêiner] C --> D[Contêiner em Execução] D --> E[Parada do Contêiner] E --> F[Remoção do Contêiner]

Comandos Básicos do Docker para Contêineres

Comando Função
docker run Criar e iniciar contêiner
docker ps Listar contêineres em execução
docker stop Parar contêiner em execução
docker rm Remover contêiner
docker exec Executar comando no contêiner

Criação e Gerenciamento de Contêineres

## Extrair a imagem Ubuntu
docker pull ubuntu:latest

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

## Listar todos os contêineres
docker ps -a

## Iniciar contêiner parado
docker start my-ubuntu

## Parar contêiner em execução
docker stop my-ubuntu

## Remover contêiner
docker rm my-ubuntu

Operações Avançadas com Contêineres

## Executar contêiner em segundo plano
docker run -d --name nginx-server nginx:latest

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

## Inspecionar detalhes do contêiner
docker inspect nginx-server

## Visualizar logs do contêiner
docker logs nginx-server

## Executar comando em contêiner em execução
docker exec -it nginx-server bash

Gerenciamento de Recursos do Contêiner

## Limitar recursos do contêiner
docker run -d \
  --name limited-container \
  --cpus="1" \
  --memory="512m" \
  nginx:latest

## Monitorar o uso de recursos do contêiner
docker stats

Configuração de Rede do Contêiner

## Criar rede personalizada
docker network create my-network

## Executar contêiner em rede específica
docker run --network=my-network -d nginx:latest

Resumo

O Docker representa uma abordagem revolucionária para o desenvolvimento de software, oferecendo contêineres leves e portáteis que otimizam o desenvolvimento de aplicativos e a gestão de infraestrutura. Ao dominar os princípios fundamentais do Docker, os processos de instalação e as técnicas de gerenciamento de contêineres, os profissionais podem aprimorar significativamente suas capacidades de desenvolvimento e implantação de software em diversos ambientes computacionais.