Sobes.tech
Junior

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.