Fundamentos de Imagens Docker
O que é uma Imagem Docker?
Uma imagem Docker é um pacote leve, independente e executável que inclui tudo o que é necessário para executar um software, incluindo o código, o tempo de execução, as ferramentas do sistema, as bibliotecas e as definições. Serve como um modelo para criar contêineres Docker.
Características Principais de Imagens Docker
Imutável
Imagens Docker são imutáveis, o que significa que, uma vez criadas, não podem ser alteradas. Quaisquer modificações requerem a criação de uma nova imagem.
graph LR
A[Dockerfile] --> B[Construir Imagem]
B --> C[Criar Contêiner]
C --> D[Executar Aplicação]
Arquitetura em Camadas
Imagens Docker utilizam um sistema de arquivos em camadas, o que permite o armazenamento e a transferência eficientes de dados de imagem.
| Tipo de Camada |
Descrição |
Exemplo |
| Camada Base |
Sistema operacional fundamental |
Ubuntu 22.04 |
| Camada de Dependências |
Bibliotecas e ferramentas do sistema |
Python, Node.js |
| Camada de Aplicação |
Código da aplicação e configuração |
Seu aplicativo personalizado |
Métodos de Criação de Imagens
1. Dockerfile
O método mais comum para criar imagens Docker é usar um Dockerfile.
## Exemplo de Dockerfile para um aplicativo Python
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y python3 python3-pip
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
2. Docker Commit
É possível criar uma imagem a partir de um contêiner em execução usando docker commit.
## Criar uma imagem a partir de um contêiner
docker commit container_name new_image_name:tag
Convenção de Nomenclatura de Imagens
Imagens Docker seguem um formato de nomenclatura específico:
nome_do_repositório/nome_da_imagem:tag
- Exemplo:
labex/python-app:latest
Comandos de Gerenciamento de Imagens
## Listar imagens locais
docker images
## Baixar uma imagem do Docker Hub
docker pull ubuntu:22.04
## Remover uma imagem
docker rmi image_name:tag
Boas Práticas
- Mantenha as imagens pequenas e focadas
- Utilize imagens base oficiais
- Minimize o número de camadas
- Utilize builds em várias etapas para aplicações complexas
Compreendendo esses fundamentos, você estará bem equipado para trabalhar com imagens Docker de forma eficaz em seu fluxo de trabalho de desenvolvimento.