Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

1
resposta

[Dúvida] Imagem x Container

Fiquei com uma dúvida entre Imagem e Container.

Imagem é um arquivo que criamos ainda na IDE, e quando subimos para o Docker Hub, vira um container?
Cada atualização de uma imagem gera um container diferente?

Dúvida dentro de um projeto:

Estou desenvolvendo um projeto com microsserviços. Qual o melhor momento para criar uma imagem e gerar um container, partindo do início do projeto?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Ola Camilo.
Pra ser direto uma imagem é um programa(como uma iso de um jogo ou software)
A partir dessa imagem voce pode instalar em quantas maquinas quiser(containers).
No caso o docker divide seu pc em varias maquinas virtuais e voce pode instalar varias vezes a mesma imagem ou outras que trabalham individualmente.
Mas vamos para uma explicação um pouco mais prolongada.

1. Imagem x Container

Uma imagem Docker é como um "modelo" ou "blueprint" (plantilha) que contém tudo o que o aplicativo ou serviço precisa para rodar, como código, dependências, variáveis de ambiente, configurações, entre outros.
As imagens são geralmente criadas a partir de um arquivo chamado Dockerfile.
Elas são imutáveis, ou seja, uma vez que você cria a imagem, ela não muda, a menos que você recrie a imagem com uma nova versão.
Um container é uma instância em execução de uma imagem.
Quando você "roda" uma imagem no Docker, o que você está fazendo é criar um container, que é o ambiente isolado onde o código da imagem será executado.
Em outras palavras, a imagem é o "plano", e o container é o "objeto" que vive em execução.

2. A relação entre imagem e container

Quando você sobe uma imagem para o Docker Hub, ela não se torna um container automaticamente.
Ela ainda permanece uma imagem. Um container é gerado quando você utiliza a imagem para criar uma instância em execução dessa imagem.
Você pode rodar múltiplos containers a partir de uma mesma imagem.
Toda vez que você atualiza uma imagem (por exemplo, mudando o código ou alguma configuração) e cria um novo container a partir dessa nova versão, o container será diferente.
O container reflete o estado da imagem no momento em que foi criado, então se a imagem mudou, o novo container será um "diferente" em relação ao anterior.

3. Momento para criar uma imagem e gerar containers em um projeto de microsserviços

Em um projeto com microsserviços, o fluxo ideal pode ser o seguinte:

  • Durante o desenvolvimento inicial:
    • Crie suas imagens assim que tiver a estrutura básica de cada microsserviço pronta, com todas as dependências e configurações que ele precisa para rodar.
    • Quando você tiver um microsserviço funcionando localmente (ou seja, ele está pronto para ser isolado em um container), crie a imagem do serviço a partir do Dockerfile.
    • Gere o container para rodar o serviço e testar. Nesse momento, o container é o ambiente que você está utilizando para rodar sua aplicação.
  • Em um ciclo contínuo de desenvolvimento:
    • Cada alteração no código pode resultar em uma nova versão da imagem, e isso gera um novo container ao rodar essa versão.
    • Se você precisar rodar o microsserviço de forma local ou em um ambiente de testes, basta criar uma nova imagem e rodá-la em containers.
  • Na produção:
    • Após a fase de desenvolvimento, quando o microsserviço estiver estável, você pode subir suas imagens para um repositório (como o Docker Hub ou um repositório privado).
    • A partir de lá, os containers podem ser rodados em servidores de produção ou em orquestradores de containers (como Kubernetes), onde os containers podem ser criados, escalados e gerenciados automaticamente.

Resumo

  • Imagem: É o blueprint do seu serviço, criado no Dockerfile.
  • Container: É uma instância em execução da imagem.
  • Quando você atualiza a imagem (por exemplo, corrigindo bugs ou ajustando configurações), você cria um novo container a partir dessa imagem atualizada.

No contexto de microsserviços, você vai criar uma imagem para cada microsserviço individualmente e rodar containers dessas imagens para testar, desenvolver e depois lançar em produção.
Espero ter respondido sua pergunta.
Senão avisa ai.
Bons estudos.