Neste artigo veremos como manter as alterações feitas em um contâiner comitando-as para uma Imagem. |
Para criar uma imagem as boas práticas recomendam usar um Dockerfile pois ele documenta todo o processo da criação da imagem. Geralmente ao usar um Dockerfile partimos de uma imagem base e criamos uma imagem personalizada que usamos para criar um contêiner.
Podemos também criar uma imagem a partir de um contêiner que configuramos e que esta pronto para ser usado, para isso usamos o comando docker commit.
|
Mas
atenção, a operação de commit não incluirá
nenhum dado contido nos volumes montados dentro do
contêiner e o contêiner que esta sendo comitado e seus processos serão pausados
enquanto a imagem é comitada. Para evitar esse comportamento defina a opção
--pause igual a false.
Vejamos um exemplo prático :
Recursos:
Estou usando o Docker no Linux usando a distribuição Ubuntu 18.04 em uma máquina virtual VirtualBox no Windows 10 Pro. (Veja neste link como instalar o Docker no Linux)
Cenário:
Depois de fazer algumas alterações dentro de um contêiner que usa a imagem do alpine, você decide que gostaria de manter essas mudanças. Você não quer perder essas mudanças depois de sair ou interromper o contêiner pois gostaria de reutilizar este tipo de contêiner como base para outros.
1- Criando o contêiner alp1 usando a imagem do alpine
$ docker run -t -i --name alp1 alpine:latest /bin/sh
Criamos um contêiner chamado alp1 com base na imagem alpine:latest no modo iterativo usando o interpretador bin/sh.
No contêiner executamos os comandos:
- apk update
- echo 'MEU ALPINE' > alp1.txt
- exit
A seguir executamos o comando : docker container ps -a
E verificamos o contêiner criado com o nome alp1 e com o CONTAINER ID igual a f9ea49a83eac.
Quando
você sai do contêiner, ele para de funcionar, mas ainda está disponível para
você até você
remover o contâiner usando o comando docker container
rm <nome ou id>
Então, antes de fazer isso, podemos comitar as alterações feitas no contâiner e criar uma nova imagem com base neste contâiner usando comando : docker commit.
Vamos criar uma imagem com o nome alpine:macoratti a partir deste contâiner.
$ docker commit alp1 alpine:macoratti
Criamos a imagem alpine:macoratti a partir do contâiner alp1 e verificamos isso usando o comando docker images
Podemos
inspecionar as alterações que foram feitas no interior deste contêinere usando o
comando :
docker container diff alp1
Observe a primeira letra de cada linha:
Agora podemos remover o contâiner alp1 pois temos a imagem alpine:macoratti a partir da qual podemos criar outros contêineres.
A título de exemplo vamos criar o contêiner alp2 a partir da imagem alpine:macoratti:
docker container run -it --name alp2 alpine:macoratti /bin/sh
Criamos o contêiner alp2 no modo iterativo, e, no contêiner exibimos os arquivos via comando ls -g onde vemos o arquivo alp1.txt criado no contêiner anterior.
Confirmamos assim que nossa imagem alpine:macoratti contém as alterações feitas no contêiner alp1 e que foram preservadas usando o comando docker commit.
"Combati o bom combate, acabei a carreira,
guardei a fé.
Desde agora, a coroa da justiça me está guardada, a qual o Senhor, justo juiz,
me dará naquele dia;
e não somente a mim, mas também a todos os que amarem a sua vinda. "
2
Timóteo 4:7,8
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão geral - Macoratti
https://docs.docker.com/engine/reference/commandline/commit/