docker commit

O comando docker commit permite criar uma nova imagem Docker a partir de um contêiner existente. Essencialmente, você tira um "instantâneo" do estado atual de um contêiner e o transforma em uma imagem que pode ser reutilizada, compartilhada ou publicada.

Sintaxe:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • CONTAINER: O nome ou ID do contêiner que você deseja transformar em uma imagem.

  • REPOSITORY[:TAG]: (Opcional) O repositório e a tag para a nova imagem. Se não for especificado, a imagem será criada com um ID sem nome associado.

Opções Comuns:

  • -a, --author: Define o autor da imagem.

  • -m, --message: Inclui uma mensagem de commit, como uma descrição da mudança ou propósito da imagem.

  • -p, --pause: Pausa o contêiner durante o commit para garantir a consistência da imagem. Este é o comportamento padrão, mas pode ser desativado com --pause=false.

Exemplo de Uso:

  1. Criar uma Imagem a partir de um Contêiner:

    Imagine que você tem um contêiner em execução chamado my_container no qual você fez várias modificações, como a instalação de novos pacotes ou a alteração de arquivos de configuração. Para salvar essas mudanças em uma nova imagem:

    docker commit my_container my_new_image

    Isso criará uma imagem chamada my_new_image a partir do contêiner my_container.

  2. Incluir Informações sobre o Autor e uma Mensagem:

    docker commit -a "Marcelo" -m "Instalei o Nginx e configurei o site" my_container my_new_image:v1

    Isso cria uma imagem chamada my_new_image com a tag v1, e inclui informações sobre o autor e uma mensagem de commit.

Como Usar:

Depois de criar uma nova imagem com docker commit, você pode usá-la como qualquer outra imagem Docker:

  • Rodar um Contêiner a partir da Nova Imagem:

  • Listar as Imagens:

    Aqui você verá my_new_image listado, e você pode utilizá-la para criar novos contêineres.

Considerações:

  • Tamanho da Imagem: Cada docker commit cria uma nova camada na imagem, o que pode aumentar o tamanho da imagem final. Sempre que possível, é melhor criar imagens baseadas em Dockerfiles, que permitem otimizações mais granulares.

  • Controle de Versão: Usar docker commit pode levar a uma falta de controle de versão adequado, pois é fácil perder o rastreamento das mudanças feitas no contêiner. Dockerfiles oferecem uma maneira mais clara e reproduzível de criar imagens.

  • Consistência: Usar a opção --pause=false pode resultar em inconsistências, especialmente em contêineres que estão manipulando dados ativamente durante o commit. É recomendável deixar a opção de pausa ativada para garantir que a imagem capturada esteja em um estado consistente.

Esse comando é útil para capturar o estado de um contêiner em desenvolvimento ou testes, mas para produção, o uso de Dockerfiles é geralmente a melhor prática.

Last updated