Fundamentos de Imagens Docker
O que são Imagens Docker?
Imagens Docker são pacotes executáveis, leves e autônomos que incluem tudo o que é necessário para executar uma aplicação: código, tempo de execução, ferramentas de sistema, bibliotecas e configurações. Elas servem como os blocos de construção fundamentais da tecnologia de contêineres, permitindo a implantação consistente e portátil de software em diferentes ambientes computacionais.
Componentes Principais de Imagens Docker
graph TD
A[Imagem Docker] --> B[Camada Base]
A --> C[Camada da Aplicação]
A --> D[Camada de Configuração]
B --> E[Sistema Operacional]
B --> F[Bibliotecas do Sistema]
C --> G[Código da Aplicação]
C --> H[Dependências]
D --> I[Variáveis de Ambiente]
D --> J[Comandos de Inicialização]
Estrutura e Camadas da Imagem
| Tipo de Camada |
Descrição |
Exemplo |
| Camada Base |
Sistema operacional fundamental |
Ubuntu 22.04 |
| Camadas Intermediárias |
Dependências do sistema |
Tempo de execução Python |
| Camada da Aplicação |
Código-fonte e arquivos da aplicação |
Aplicação Web |
| Camada de Configuração |
Configurações de tempo de execução |
Mapeamentos de porta |
Criando uma Imagem Docker: Exemplo Prático
## Criar um diretório de projeto
mkdir my-docker-app
cd my-docker-app
## Criar uma aplicação Python simples
echo "print('Olá, Docker!')" > app.py
## Criar o Dockerfile
cat > Dockerfile << EOL
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3
COPY app.py /app/app.py
WORKDIR /app
CMD ["python3", "app.py"]
EOL
## Construir a imagem Docker
docker build -t my-python-app .
## Executar o contêiner
docker run my-python-app
Este exemplo demonstra a criação de uma imagem Docker com uma base mínima do Ubuntu, instalando o Python e executando um script Python simples. O Dockerfile define cada camada da imagem, garantindo a reprodutibilidade e consistência em diferentes ambientes.
Características da Imagem
Imagens Docker são imutáveis, o que significa que, uma vez criadas, permanecem inalteradas. Cada imagem consiste em várias camadas somente leitura que podem ser compartilhadas entre diferentes imagens, promovendo eficiência no armazenamento e nos tempos de download.