Noções Básicas de Imagens Docker
O que é uma Imagem Docker?
Uma imagem Docker é um pacote leve, independente e executável que inclui tudo o necessário para executar um software, incluindo o código, o tempo de execução, as bibliotecas, as variáveis de ambiente e os arquivos de configuração. Serve como um modelo para criar contêineres Docker.
Componentes Principais de Imagens Docker
Camadas de Imagem
Imagens Docker são compostas por múltiplas camadas somente leitura empilhadas umas sobre as outras. Cada camada representa um conjunto de alterações no sistema de arquivos:
graph TD
A[Camada Base: Ubuntu] --> B[Instalar Python]
B --> C[Copiar Código da Aplicação]
C --> D[Definir Variáveis de Ambiente]
Anatomia da Imagem
Uma imagem Docker típica consiste em vários componentes principais:
| Componente |
Descrição |
Exemplo |
| Imagem Base |
Camada fundamental |
Ubuntu, Alpine Linux |
| Dependências |
Bibliotecas e pacotes necessários |
Python, Node.js |
| Código da Aplicação |
Seu aplicativo específico |
Aplicação Flask, Django |
| Configuração |
Configurações de tempo de execução |
Variáveis ENV, Portas |
Criando Imagens Docker
Dockerfile
Um Dockerfile é um documento de texto que contém instruções para construir uma imagem Docker. Aqui está um exemplo básico:
## Usar imagem base oficial Ubuntu
FROM ubuntu:22.04
## Atualizar listas de pacotes
RUN apt-get update && apt-get upgrade -y
## Instalar Python
RUN apt-get install -y python3 python3-pip
## Definir diretório de trabalho
WORKDIR /app
## Copiar arquivos da aplicação
COPY . /app
## Instalar dependências
RUN pip3 install -r requirements.txt
## Definir comando padrão
CMD ["python3", "app.py"]
Construindo uma Imagem
Para construir uma imagem Docker, use o comando docker build:
## Construir imagem com tag
docker build -t myapp:v1 .
## Listar imagens disponíveis
docker images
Nomeação e Etiquetagem de Imagens
Imagens Docker seguem uma convenção de nomenclatura padrão:
[registry]/[username]/[nome-da-imagem]:[tag]
- Exemplo:
docker.io/labex/python-app:latest
Armazenamento e Distribuição de Imagens
Imagens podem ser armazenadas em:
- Demônio Docker local
- Registros de contêineres (Docker Hub, Registro LabEx)
- Repositórios privados
Boas Práticas
- Usar imagens base mínimas
- Minimizar o número de camadas
- Aproveitar o cache de construção
- Evitar instalar pacotes desnecessários
- Usar builds multi-stage para imagens menores
Compreendendo esses fundamentos, os desenvolvedores podem criar imagens Docker eficientes e reproduzíveis para seus aplicativos.