Introdução ao Docker: Conceitos, Instalação e Operações Básicas

O que é Docker?

O Docker é uma plataforma de containerização de código aberto, desenvolvida em Go e licenciada sob Apache 2.0. Funciona como uma ferramenta leve de virtualização que permite executar aplicações em containers Linux isolados, proporcionando portabilidade e independência do ambiente host.

A filosofia do Docker é "Construir, Enviar e Executar Qualquer Aplicação em Qualquer Lugar". Isso significa encapsular componentes de software - desde uma única aplicação até um sistema operacional completo - garantindo que funcionem de forma consistente em qualquer infraestrutura.

Vantagens da Containerização

  • Versatilidade: Aplicações compllexas podem ser encapsuladas
  • Eficiência: Compartilhamento do kernel do host reduz overhead
  • Modularidade: Atualizações e upgrades podem ser aplicados instantaneamente
  • Portabilidade: Containers podem ser construídos localmente e executados em qualquer ambiente
  • Escalabilidade: Réplicas podem ser criadas e distribuídas automaticamente

Containers vs Máquinas Virtuais

Containers executam nativamente no Linux, compartilhando o kernel do host e operando como procesos isolados com consumo mínimo de recursos. Em contraste, máquinas virtuais executam sistemas operacionais completos através de hypervisors, exigindo consideravelmente mais recursos computacionais.

Tecnologias Nucleares

O Docker fundamenta-se em três tecnologias-chave do kernel Linux:

  • Namespaces: Isolamento de recursos entre containers
  • Cgroups: Limitação e controle de uso de recursos
  • Copy-on-Write: Otimização de operações de arquivos

Componentes Essenciais do Docker

Imagem: Template somente leitura contendo o código, bibliotecas e configurações necessárias para executar uma aplicação.

Container: Instância em execução criada a partir de uma imagem, encapsulando um ambiente Linux minimalista com a aplicação.

Repositório: Serviço de armazenamento centralizado para imagens, podendo ser público ou privado. Os dados do Docker são armazenados em /var/lib/docker.

Instalação do Docker

Preparação do Ambiente

# Desativar firewall e SELinux
systemctl disable firewalld
setenforce 0

# Instalar dependências necessárias
yum install -y yum-utils device-mapper-persistent-data lvm2

Configuração e Instalação

# Adicionar repositório Alibaba Cloud
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Instalar Docker Community Edition
yum install -y docker-ce

# Iniciar serviço e configurar inicialização automática
systemctl start docker
systemctl enable docker

# Verificar instalação
docker version

Operações com Imagens

Busca de Imagens

# Pesquisar imagens disponíveis
docker search nginx

Download de Imagens

# Baixar imagem (latest por padrão)
docker pull nginx

Configuração de Acelerador de Download

# Criar arquivo de configuração
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'CONFIG'
{
  "registry-mirrors": ["https://anx0by6z.mirror.aliyuncs.com"]
}
CONFIG

# Recarregar configurações
systemctl daemon-reload
systemctl restart docker

Visualização de Imagens

# Listar imagens locais
docker images

# Inspecionar detalhes de uma imagem
docker inspect 3964ce7b8458

Gerenciamento de Tags

# Adicionar nova tag a uma imagem
docker tag nginx:latest nginx:web

Remoção de Imagens

# Remover por tag (remove apenas a tag específica)
docker rmi nginx:web

# Remover por ID (remove completamente)
docker rmi 3964ce7b8458

Exportação e Importação

# Salvar imagem em arquivo
docker save -o nginx_backup nginx:latest

# Carregar imagem de arquivo
docker load -i nginx_backup

Upload para Repositório

# Autenticar no Docker Hub
docker login

# Marcar imagem para upload
docker tag nginx:web usuario/nginx:web

# Enviar imagem
docker push usuario/nginx:web

Operações com Containers

Criação de Container

# Criar container interativo
docker create -it nginx:latest /bin/bash

Visualização de Status

# Listar todos os containers
docker ps -a

Inicialização de Container

# Iniciar container existente
docker start a72736a1b1b7

# Criar e iniciar container
docker run centos:7 /usr/bin/bash -c "ls /"

# Executar em background
docker run -d centos:7 /usr/bin/bash -c "while true; do echo hello; done"

# Criar container nomeado em background
docker run -itd --name app1 centos:7 /bin/bash

Parada de Container

# Parada graciosa
docker stop 9c08e89c75c1

# Parada forçada
docker kill 9c08e89c75c1

Acessso ao Container

# Acessar shell do container
docker exec -it 731cf8b160da /bin/bash

Transferência de Arquivos

# Copiar arquivo do host para container
docker cp arquivo.txt 731cf8b160da:/opt

Migração de Containers

# Exportar container para arquivo
docker export 2592d3fad0fb > backup.tar

# Importar container de arquivo
cat backup.tar | docker import - minha_imagem:v1

Remoção de Containers

# Remover container parado
docker rm 2592d3fad0fb

# Forçar remoção de container em execução
docker rm -f 2592d3fad0fb

# Remover todos os containers parados
docker container prune

Tags: Docker Container virtualização Linux Docker Hub

Publicado em 7-10 08:24