DEV Community

Cover image for Imagem Docker não é a mesma coisa que contêiner Docker
Felipe Cezar
Felipe Cezar

Posted on

Imagem Docker não é a mesma coisa que contêiner Docker

Muita gente confunde esses dois conceitos no começo, mas eles são coisas diferentes.

A ideia mais simples de entender

Pensa assim:

  • Imagem é o molde pronto
  • Contêiner é esse molde em execução

O que é uma imagem?

A imagem Docker é o resultado do docker build.

Ela já vem com tudo empacotado:

  • Python
  • bibliotecas
  • teu código
  • configurações

Mas ela, sozinha, não executa nada.

É como se fosse um sistema já preparado para rodar, mas ainda parado.

O que é um contêiner?

O contêiner é a imagem rodando de verdade.

Quando tu executa:

docker compose up
Enter fullscreen mode Exit fullscreen mode

o Docker pega a imagem e cria uma instância ativa dela.

Aí sim a aplicação fica viva:

  • Uvicorn sobe
  • a porta 8000 começa a escutar
  • as requisições passam a ser processadas

Uma analogia boa: classe e objeto

Se tu vem de programação, essa comparação ajuda muito:

  • Imagem = classe
  • Contêiner = objeto

Ou seja, a imagem é o molde, e o contêiner é a instância criada a partir dele.

E assim como uma classe pode gerar vários objetos, uma imagem também pode gerar vários contêineres.

Como ver isso no terminal

Tu consegue observar essa diferença com dois comandos:

docker images
docker ps -a
Enter fullscreen mode Exit fullscreen mode

O que cada um mostra?

  • docker images mostra as imagens salvas no disco
  • docker ps -a mostra os contêineres criados

Um exemplo prático

No teu caso, aconteceu algo assim:

  • docker images mostrou 1 imagem
  • docker ps -a mostrou 0 contêineres

Isso significa que o molde ainda existe, mas nenhuma instância está rodando no momento.

Provavelmente porque tu executou:

docker compose down
Enter fullscreen mode Exit fullscreen mode

Então por que o próximo build fica mais rápido?

Porque a imagem continua salva no disco mesmo sem nenhum contêiner rodando.

Por isso o Docker pode reaproveitar camadas já existentes, em vez de baixar e reconstruir tudo do zero.

Resumindo

Imagem Docker

É o pacote pronto, criado no build.

Contêiner Docker

É esse pacote em execução.

Conclusão

No fim, a diferença é essa:

imagem é o pacote; contêiner é o processo rodando.

Quando tu entende isso, várias coisas no Docker começam a fazer muito mais sentido.

Top comments (0)