Qual é a diferença entre uma imagem e um contêiner?
sobes.tech IA
Resposta da IA
Uma imagem (image) é uma captura estática e imutável do sistema de ficheiros e dos parâmetros de configuração necessários para executar uma aplicação. Serve como modelo.
Um contêiner (container) é uma instância em execução de uma imagem. É dinâmico e representa um processo em funcionamento com a sua própria interface de rede, sistema de ficheiros (baseado na imagem) e ambiente isolado.
| Característica | Imagem | Contêiner |
|---|---|---|
| Estado | Imutável | Mutável |
| Entidade | Modelo | Instância em execução |
| Tamanho | Geralmente menor que um contêiner em execução | Pode ser maior devido à camada de escrita |
| Ciclo de vida | Criado, mantido | Criado, iniciado, parado, eliminado |
Exemplo: Dockerfile:
# Imagem base
FROM ubuntu:latest
# Copiar a aplicação
COPY app /app
# Instalar dependências
RUN apt-get update && apt-get install -y python3
# Definir diretório de trabalho
WORKDIR /app
# Comando de início
CMD ["python3", "main.py"]
Este Dockerfile descreve como construir uma imagem. Após construir a imagem, por exemplo com o comando docker build -t myapp ., obtemos uma imagem estática chamada myapp.
Depois, ao executar o comando docker run -d myapp, criamos um contêiner baseado nesta imagem. Este contêiner é um processo ativo onde a nossa aplicação é executada. Vários contêineres podem ser criados a partir de uma mesma imagem. As alterações dentro de um contêiner (por exemplo, gravação de ficheiros) não afetam a própria imagem nem outros contêineres criados a partir dela, graças ao mecanismo Copy-on-Write.