Como enviar e extrair imagens do Docker do Google Container Registry
O Google Container Registry é um serviço de armazenamento privado para imagens do Docker, usado para executar aplicativos em contêineres. Ele é usado para hospedar imagens para implantação em outros serviços de contêiner do GCP, como Cloud Run e Kubernetes Engine.
O que é o Google Container Registry?
Ao trabalhar com imagens do Docker, muitas vezes você as empurra e extrai de um registro de contêiner, usado para armazenamento e acesso centralizado rápido. O registro mais popular é o Docker Hub oficial, que é público, mas muitos provedores de nuvem oferecem registros de contêiner privados. O Container Registry do Google é um deles, fornecendo seu próprio registro para sua conta GCP.
É bem simples de usar. Com alguma configuração do Docker, você deve conseguir enviar e extrair imagens usando docker tag
e docker push
e, em seguida, implantar essas atualizações como atualizações de contêiner no Kubernetes Engine.
O Container Registry não está disponível para contas que não ativaram o faturamento. No entanto, é muito barato: os contêineres são armazenados em um bucket do Cloud Storage e você paga apenas o padrão US$0,026 por GB por mês para armazenamento, bem como cobranças de dados padrão para saída. Opcionalmente, você pode habilitar a “Varredura de Vulnerabilidade”, que custa US$0,26 por atualização de contêiner para verificar vulnerabilidades no software subjacente usado no contêiner.
Enviando imagens para GCR
Antes de começarmos, você precisa se certificar de que instalou o Google Cloud SDK, que lhe dará acesso à gcloud
CLI. Obviamente, você também precisará do Docker instalado para trabalhar com imagens de contêiner em primeiro lugar.
Você precisará habilitar a API do Container Registry. Clique em Ativar.
Como os repositórios são privados, você precisará configurar o Docker para funcionar com a autenticação gcloud, o que pode ser feito automaticamente com o seguinte comando que fará algumas alterações na configuração do Docker para adicionar a CLI gcloud como um auxiliar de credencial:
gcloud auth configure-docker
Você precisará do ID do projeto para a próxima etapa; isso é visível no menu suspenso Selecionar projeto no console do GCP. Copie a identificação.
Em seguida, você pode marcar a imagem normalmente usando docker tag
, fornecendo apenas um nome de host personalizado para GCR. Por padrão, gcr.io
armazena imagens em um depósito de armazenamento em nuvem localizado nos EUA. Você também pode usar eu.gcr.io
e asia.gcr.io
para essas regiões.
docker tag [SOURCE_IMAGE] gcr.io/[PROJECT-ID]/[IMAGE]
Isso marca a imagem como latest
, o padrão para novas implantações, mas se quiser usar outra tag, você pode anexar :tag
ao nome da imagem.
Depois de marcado, você pode carregá-lo no GCR com docker push
:
docker push gcr.io/[PROJECT-ID]/[IMAGE]
Depois de carregados, eles ficarão visíveis no console do Container Registry ou executando gcloud container images list-tags
, e você poderá usá-los para suas implantações do Cloud Run e do Kubernetes.
Se você deseja puxar manualmente a imagem para baixo, pode fazê-lo com docker pull
:
docker pull gcr.io/[PROJECT-ID]/[IMAGE]:[TAG]
Obviamente, você precisará do gcloud
instalado e configurado como um auxiliar de credencial na máquina que faz a extração, ou não será capaz de autenticar.