Como usar o comando docker image push para enviar imagens

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como carregar suas imagens Docker para um registro usando o comando docker image push. Este processo é essencial para compartilhar suas imagens personalizadas com outras pessoas ou implantá-las em diferentes ambientes.

Você começará confirmando as alterações feitas dentro de um contêiner em execução para criar uma nova imagem. Em seguida, aprenderá como marcar (tag) essa imagem apropriadamente para um registro específico, que é um passo crucial antes de fazer o push. Finalmente, você praticará o push da imagem marcada para o registro, incluindo como fazer o push de todas as tags associadas a uma imagem.

Confirmar um contêiner em uma nova imagem

Nesta etapa, você aprenderá como confirmar as alterações feitas dentro de um contêiner em execução para uma nova imagem Docker. Isso é útil quando você deseja salvar o estado de um contêiner após fazer modificações, como instalar software ou configurar arquivos.

Primeiro, vamos executar um contêiner Ubuntu simples. Usaremos a imagem ubuntu. Como faremos alterações dentro do contêiner, precisamos executá-lo interativamente com um pseudo-TTY.

docker run -it ubuntu

Você deve estar agora dentro do shell do contêiner Ubuntu. Vamos fazer uma alteração simples, como instalar o pacote curl.

apt-get update
apt-get install -y curl

Após a conclusão da instalação, saia do shell do contêiner digitando exit.

exit

Agora que você saiu do contêiner, as alterações que você fez (instalação do curl) ainda estão presentes naquela instância específica do contêiner. Para salvar essas alterações como uma nova imagem, você precisa confirmar o contêiner.

Primeiro, encontre o ID do contêiner do contêiner do qual você acabou de sair. Você pode usar o comando docker ps -a para listar todos os contêineres, incluindo aqueles que foram encerrados.

docker ps -a

Procure o contêiner que foi criado a partir da imagem ubuntu e anote seu CONTAINER ID.

Agora, use o comando docker commit para criar uma nova imagem a partir deste contêiner. A sintaxe básica é docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]. Vamos confirmar o contêiner e dar à nova imagem um nome e uma tag. Substitua <CONTAINER_ID> pelo ID real que você encontrou.

docker commit < CONTAINER_ID > my-ubuntu-with-curl:v1

Este comando cria uma nova imagem chamada my-ubuntu-with-curl com a tag v1. Você pode verificar se a nova imagem foi criada listando suas imagens locais.

docker images

Você deve ver my-ubuntu-with-curl na lista de imagens. Esta nova imagem agora inclui o pacote curl que você instalou no contêiner.

Marcar a imagem para um registro específico

Nesta etapa, você aprenderá como marcar uma imagem Docker para que ela possa ser enviada (push) para um registro de contêiner específico. Quando você envia uma imagem para um registro, a tag é usada para identificar a imagem dentro desse registro. O formato padrão para marcar uma imagem para um registro é [registry-hostname[:port]]/repository[:tag].

Na etapa anterior, você criou uma imagem chamada my-ubuntu-with-curl com a tag v1. Agora, vamos marcar esta imagem para um registro hipotético. Para fins de demonstração, usaremos localhost:5000 como nosso endereço de registro.

Você pode usar o comando docker tag para criar uma nova tag para uma imagem existente. A sintaxe básica é docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG].

Vamos marcar a imagem my-ubuntu-with-curl:v1 para nosso registro hipotético.

docker tag my-ubuntu-with-curl:v1 localhost:5000/my-ubuntu-with-curl:v1

Este comando cria uma nova tag localhost:5000/my-ubuntu-with-curl:v1 que aponta para a mesma imagem que my-ubuntu-with-curl:v1.

Você pode verificar se a nova tag foi adicionada listando suas imagens locais novamente.

docker images

Você deve agora ver uma entrada para localhost:5000/my-ubuntu-with-curl com a tag v1. Isso indica que a imagem agora está marcada e pronta para ser enviada (push) para o registro em localhost:5000.

Enviar a imagem marcada para o registro

Nesta etapa, você aprenderá como enviar (push) uma imagem Docker marcada para um registro de contêiner. Enviar uma imagem a torna disponível para que outros possam puxar (pull) e usar.

Antes de poder enviar uma imagem para um registro local, você precisa ter um registro em execução. Para este laboratório, executaremos um contêiner de registro local temporário.

Primeiro, puxe (pull) a imagem registry.

docker pull registry:2

Agora, execute o contêiner do registro. Mapearemos a porta 5000 no host para a porta 5000 no contêiner.

docker run -d -p 5000:5000 --name local-registry registry:2

Este comando inicia um contêiner em modo detached (desacoplado) chamado local-registry executando o registro Docker.

Na etapa anterior, você marcou a imagem my-ubuntu-with-curl:v1 com localhost:5000/my-ubuntu-with-curl:v1. Esta tag inclui o endereço do nosso registro local (localhost:5000).

Agora, você pode enviar (push) esta imagem marcada para o registro local usando o comando docker push. A sintaxe é docker push NAME[:TAG].

docker push localhost:5000/my-ubuntu-with-curl:v1

Você deve ver a saída indicando o progresso da operação de envio (push), incluindo as camadas sendo enviadas.

Após a conclusão do envio (push), a imagem my-ubuntu-with-curl:v1 agora está armazenada em seu registro local em localhost:5000.

Enviar todas as tags de uma imagem

Nesta etapa, você aprenderá como enviar (push) todas as tags associadas a uma imagem específica para um registro de contêiner. Às vezes, você pode ter várias tags apontando para a mesma imagem (por exemplo, latest, v1.0, stable). Você pode enviar (push) todas essas tags com um único comando.

Nas etapas anteriores, você criou uma imagem my-ubuntu-with-curl e a marcou como v1 e localhost:5000/my-ubuntu-with-curl:v1. Vamos adicionar outra tag a esta imagem. Vamos marcá-la como latest para nosso registro local.

Use o comando docker tag novamente para adicionar a tag latest.

docker tag my-ubuntu-with-curl:v1 localhost:5000/my-ubuntu-with-curl:latest

Agora, liste suas imagens para ver a nova tag.

docker images

Você deve agora ver localhost:5000/my-ubuntu-with-curl com as tags v1 e latest, ambas apontando para o mesmo ID da imagem.

Para enviar (push) todas as tags desta imagem para o registro local, você pode usar o comando docker push com o nome do repositório sem especificar uma tag.

docker push localhost:5000/my-ubuntu-with-curl

Docker identificará todas as tags associadas ao repositório localhost:5000/my-ubuntu-with-curl e enviará (push) cada uma para o registro. Você verá a saída indicando o progresso do envio (push) para as tags v1 e latest.

Após a conclusão do envio (push), ambas as versões da sua imagem (v1 e latest) estão disponíveis em seu registro local.

Resumo

Neste laboratório, você aprendeu como confirmar (commit) as alterações feitas dentro de um contêiner Docker em execução para uma nova imagem. Este processo envolve a execução de um contêiner, a realização de modificações dentro dele (como a instalação de software), a saída do contêiner, a identificação do ID do contêiner e, em seguida, o uso do comando docker commit para criar uma nova imagem com base no estado do contêiner. Você também aprendeu como atribuir um nome e uma tag à imagem recém-criada e verificar sua existência usando docker images.