O que acontece após fazer alterações na imagem?
sobes.tech IA
Resposta da IA
Após fazer alterações na imagem, a própria imagem torna-se numa nova versão separada. Ao iniciar um contêiner com base nesta imagem, o contêiner usará a versão modificada que reflete as alterações aplicadas. Os contêineres antigos, que foram iniciados com versões anteriores da imagem, manterão o seu estado e funcionarão com a versão antiga até serem parados e reiniciados com a nova imagem. Em outras palavras, as alterações na imagem não afetam os contêineres já em execução.
Vamos analisar o ciclo de vida com o exemplo do Docker:
-
Construção do Dockerfile: Faz alterações no
Dockerfile.# Dockerfile atualizado FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 -
Construção da imagem: Executa o comando de build.
# Construção de uma nova versão da imagem docker build -t my-webserver:v2 .O Docker cria uma nova camada com as alterações feitas sobre as camadas anteriores.
my-webserver:v2agora aponta para a nova imagem. -
Executar um novo contêiner: Inicia um novo contêiner.
# Executar um contêiner com a nova versão da imagem docker run -d -p 8080:80 --name webserver_v2 my-webserver:v2Este contêiner usará a nova versão da imagem.
-
Contêineres existentes: Os contêineres iniciados com, por exemplo,
my-webserver:v1, continuarão a funcionar com os dados e configurações antigos.
| Ação | Resultado | Impacto nos contêineres antigos |
|---|---|---|
| Alteração no Dockerfile | O código que define a imagem muda. | Não |
| Construção da imagem (docker build) | Uma nova imagem com um ID único é criada. | Não |
| Etiquetar a imagem (docker tag) | Atribui um alias à nova imagem. | Não |
| Iniciar um novo contêiner | O novo contêiner usa a nova imagem. | Não |
| Reiniciar o contêiner antigo | Executar o contêiner antigo com a imagem antiga. | Não (por padrão) |
| Eliminar a imagem antiga | A imagem é eliminada, mas os contêineres baseados nela permanecem. | Não (os contêineres permanecem) |
Se for necessário atualizar os contêineres em execução para a nova versão da imagem, deve-se parar e eliminar os antigos, e depois iniciar novos com a imagem atualizada. Em ambientes de produção, para gerir essas atualizações, usam-se orquestradores como Kubernetes, Docker Swarm ou utilitários como Docker Compose, que implementam estratégias de atualizações contínuas (rolling updates).