Criação de Imagens Docker
Compreendendo Imagens Docker
Imagens Docker são modelos de leitura-somente usados para criar contêineres. Elas servem como o projeto fundamental para aplicações em contêineres, contendo todos os componentes necessários para executar ambientes de software.
Métodos de Criação de Imagens
Docker fornece múltiplas abordagens para criar imagens:
| Método |
Descrição |
Caso de Uso |
| Dockerfile |
Criação de imagem script |
Construções reproduzíveis |
| Docker Commit |
Geração manual de imagem |
Prototipagem rápida |
| Docker Build |
Construção automatizada de imagem |
Implementação de produção |
Processo de Criação de Dockerfile
graph TD
A[Dockerfile] --> B[Imagem Base]
B --> C[Instalar Dependências]
C --> D[Copiar Código da Aplicação]
D --> E[Configurar Ponto de Entrada]
E --> F[Construir Imagem]
Exemplo de Dockerfile para Aplicação Python
## Usar imagem de tempo de execução Python oficial como imagem base
FROM python:3.9-slim
## Definir diretório de trabalho
WORKDIR /app
## Copiar arquivo de requisitos
COPY requirements.txt .
## Instalar dependências
RUN pip install --no-cache-dir -r requirements.txt
## Copiar código da aplicação
COPY . .
## Especificar comando para executar a aplicação
CMD ["python", "app.py"]
Comandos de Construção de Imagens Docker
## Construir imagem a partir do Dockerfile
docker build -t myapp:v1 .
## Listar imagens locais
docker images
## Marcar uma imagem existente
docker tag myapp:v1 myregistry/myapp:latest
## Empurrar imagem para o repositório
docker push myregistry/myapp:latest
Criação Manual de Imagem via Commit
## Iniciar um contêiner e modificá-lo
docker run -it ubuntu:latest /bin/bash
## [Dentro do contêiner] apt-get update
## [Dentro do contêiner] apt-get install python3
## Registrar as alterações do contêiner em uma nova imagem
docker commit [container_id] myubuntu:python
Mecanismo de Camadas de Imagem
Imagens Docker são compostas por múltiplas camadas de leitura-somente, permitindo armazenamento eficiente e inicialização rápida de contêineres. Cada instrução em um Dockerfile cria uma nova camada, otimizando a utilização de recursos e a velocidade de transferência.