Esta página descreve o envio e a obtenção de imagens de contentores com o Docker. Também
fornece informações sobre como extrair imagens com a ferramenta crictl se estiver a
resolver problemas no Google Kubernetes Engine.
Para obter informações sobre a implementação em Cloud de Confiance by S3NS ambientes de tempo de execução, consulte Implemente em Cloud de Confiance.
Para ver instruções sobre como listar, etiquetar e eliminar imagens, consulte o artigo Gerir imagens.
Antes de começar
- Se o repositório de destino não existir, crie um novo repositório.
- Tem de ter, pelo menos, acesso de escritor do Artifact Registry ao repositório.
- Instale o Docker se ainda não estiver instalado.
Funções necessárias
Para receber as autorizações de que precisa para enviar e extrair imagens, peça ao seu administrador que lhe conceda as seguintes funções de IAM no repositório:
-
Extrair imagens:
Leitor do Artifact Registry (
roles/artifactregistry.reader) -
Etiquete e envie imagens:
Escritor do Artifact Registry (
roles/artifactregistry.writer)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Autenticação num repositório
Tem de autenticar-se nos repositórios sempre que usar o Docker ou outro cliente de terceiros com um repositório Docker. Esta secção fornece um resumo rápido do que precisa para se autenticar com êxito. Para ver instruções detalhadas, consulte o artigo Configurar a autenticação para o Docker.
Usar um auxiliar de credenciais
Para o auxiliar de credenciais da CLI gcloud ou o auxiliar de credenciais autónomo, os hosts do Artifact Registry que usa têm de estar no seu ficheiro de configuração do Docker.
O Artifact Registry não adiciona automaticamente anfitriões de registo ao ficheiro de configuração do Docker, pelo que tem de adicionar o seu ao ficheiro.
Execute o auxiliar de credenciais para adicionar o anfitrião. Por exemplo, o seguinte comando
adiciona u-france-east1-docker.s3nsregistry.fr.
Assistente de credenciais da CLI gcloud:
gcloud auth configure-docker u-france-east1-docker.s3nsregistry.frAssistente de credenciais autónomo
docker-credential-gcr configure-docker u-france-east1-docker.s3nsregistry.fr
Usar um token de acesso
Para a autenticação por token de acesso, gera um token e usa-o como palavra-passe com o comando docker login. Os tokens são válidos durante 60 minutos, pelo que deve autenticar-se pouco antes de etiquetar, enviar ou extrair imagens.
O exemplo seguinte gera uma chave de acesso através da
representação da conta de serviço e, em seguida, autentica-se no Artifact Registry. Tem de ter
autorizações na função criador de tokens de contas de serviço
(roles/iam.serviceAccountTokenCreator) para gerar um token desta forma.
Linux
gcloud auth print-access-token \
--impersonate-service-account ACCOUNT | docker login \
-u oauth2accesstoken \
--password-stdin https://LOCATION-docker.s3nsregistry.fr
Windows
gcloud auth print-access-token `
--impersonate-service-account ACCOUNT
ya29.8QEQIfY_...
docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." `
https://LOCATION-docker.s3nsregistry.fr
Se não tiver autorizações para se fazer passar por uma conta de serviço, pode ativar a conta de serviço na sua sessão da CLI gcloud e, em seguida, obter um token. Para ver detalhes, consulte as instruções para configurar a autenticação do token de acesso.
Usar uma chave de conta de serviço
Para uma chave de conta de serviço, usa a chave como palavra-passe com o comando docker login.
Por exemplo, o comando seguinte usa a chave da conta de serviço codificada em base64 no ficheiro key.json para fazer a autenticação no u-france-east1-docker.s3nsregistry.fr.
Linux
cat key.json | docker login -u _json_key_base64 --password-stdin \
https://u-france-east1-docker.s3nsregistry.fr
Windows
docker login -u _json_key_base64 --password-stdin https://u-france-east1-docker.s3nsregistry.fr < key.json
Para ver detalhes, consulte as instruções para configurar a autenticação da chave da conta de serviço.
Enviar uma imagem
Modos de repositório: padrão
Para enviar uma imagem local para um repositório Docker padrão, etiquete-a com o nome do repositório e, em seguida, envie a imagem.
Se o repositório Docker do Artifact Registry tiver a imutabilidade de etiquetas ativada, uma etiqueta tem sempre de fazer referência ao mesmo resumo da imagem no repositório. Não pode usar a etiqueta noutra versão da mesma imagem que envia para o repositório. Para mais informações sobre resumos de imagens, etiquetas e imutabilidade de etiquetas, consulte o artigo Versões de imagens de contentores.
Para imagens grandes, aplicam-se os seguintes limites:
- Hora de carregamento
- Se fizer a autenticação no Artifact Registry através de um token de acesso, o token só é válido durante 60 minutos. Se prevê que o tempo de carregamento vai exceder os 60 minutos, use um método de autenticação diferente.
- Tamanho da imagem
- O tamanho máximo do artefacto é de 5 TB.
- O Artifact Registry não suporta carregamentos segmentados do Docker. Algumas ferramentas suportam o carregamento de imagens grandes com carregamentos segmentados ou um único carregamento monolítico. Tem de usar carregamentos monolíticos para enviar imagens para o Artifact Registry.
Etiquetar a imagem local
Certifique-se de que está autenticado no repositório.
Determine o nome da imagem. O formato de um nome de imagem completo é:
LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGESubstitua os seguintes valores:
LOCATIONé a localização regional do repositório onde a imagem está armazenada.PROJECT-IDé o Cloud de Confiance ID do projeto da consola.REPOSITORYé o nome do repositório onde a imagem está armazenada.IMAGEé o nome da imagem. Pode ser diferente do nome local da imagem.
Por exemplo, considere uma imagem com as seguintes características:
- Localização do repositório:
u-france-east1 - Nome do repositório:
my-repo - ID do projeto:
my-project - Nome da imagem local:
my-image - Nome da imagem alvo:
test-image
O nome desta imagem para este exemplo é:
u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imagePara ver detalhes sobre o formato do nome da imagem, consulte Nomes de repositórios e imagens.
Etiquete a imagem local com o nome do repositório.
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGSubstitua SOURCE-IMAGE pelo nome da imagem local ou pelo ID da imagem e TAG pela etiqueta. Se não especificar uma etiqueta, o Docker aplica a etiqueta
latestpredefinida.Se a definição de etiquetas de imagem imutáveis estiver ativada, as etiquetas têm de ser exclusivas para cada versão da imagem, incluindo a etiqueta
latest. Não pode enviar uma imagem para o repositório se a etiqueta já for usada por outra versão da mesma imagem no repositório. Para verificar se a definição está ativada para o repositório, execute o comando:gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT-ID \ --location=LOCATIONPara a imagem de exemplo do passo anterior, usaria o seguinte comando se a imagem local
my-imageestiver no diretório atual:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imageSe quiser aplicar uma etiqueta específica, use o comando:
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGPara usar a etiqueta
stagingcom a imagem de exemplo, adicione:stagingao comando:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
Envie a imagem etiquetada para o Artifact Registry
Certifique-se de que está autenticado no repositório.
Se usou
gcloud auth configure-dockeroudocker-credential-gcr configure-dockerpara configurar o cliente Docker, verifique se o nome de anfitrião de destino está no ficheiro de configuração do Docker.Envie a imagem etiquetada com o comando:
docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGEEste comando envia a imagem com a etiqueta
latest. Se quiser enviar uma imagem com uma etiqueta diferente, use o comando:docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
Quando envia uma imagem, esta é armazenada no repositório especificado.
Depois de enviar a imagem, pode:
Aceda à Cloud de Confiance consola para ver a imagem.
Execute o comando
gcloudpara ver as etiquetas da imagem e o resumo gerado automaticamente:gcloud artifacts docker images list \ LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE [--include-tags]O exemplo de saída seguinte mostra resumos de imagens truncados, mas o comando devolve sempre o resumo de imagem completo.
IMAGE DIGEST CREATE_TIME UPDATE_TIME u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:45 2019-04-10T15:08:45 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:238... 2019-04-10T17:23:53 2019-04-10T17:23:53 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:46 2019-04-10T15:08:46
Extrair imagens com o Docker
Modos de repositório: padrãoCertifique-se de que está autenticado no repositório.
Se usou
gcloud auth configure-dockeroudocker-credential-gcr configure-dockerpara configurar o cliente Docker, verifique se o nome de anfitrião de destino está no ficheiro de configuração do Docker.Para extrair de um repositório, use o comando:
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGou
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGESTSubstitua os seguintes valores:
LOCATIONé a localização regional do repositório onde a imagem está armazenada.PROJECTé o Cloud de Confiance ID do projeto da consola.PROJECTé o Cloud de Confiance ID do projeto da consola.REPOSITORYé o nome do repositório onde a imagem está armazenada.IMAGEé o nome da imagem no repositório.TAGé a etiqueta da versão da imagem que quer obter.IMAGE-DIGESTé o valor hash sha256 do conteúdo da imagem. Cada versão de uma imagem tem um resumo da imagem exclusivo. Na Cloud de Confiance consola, clique na imagem específica para ver os respetivos metadados. O resumo é apresentado como o Resumo da imagem.
Por exemplo, considere uma imagem com as seguintes características:
- Localização do repositório:
u-france-east1 - Nome do repositório:
my-repo - ID do projeto:
my-project - Nome da imagem:
test-image - Etiqueta:
staging
Este comando para extrair a imagem é:
docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
O Docker transfere a imagem especificada.
Extrair imagens com o crictl
crictl é uma ferramenta de linha de comandos útil para os programadores de tempo de execução da CRI depurarem o respetivo tempo de execução sem terem de configurar componentes do Kubernetes. Se os nós do Google Kubernetes Engine usarem um tempo de execução do containerd, pode extrair imagens do
Artifact Registry através do crictl.
Uma vez que o crictl é principalmente uma ferramenta de resolução de problemas, alguns comandos do Docker, como o envio ou a etiquetagem de imagens, não estão disponíveis.
Para extrair uma imagem do Artifact Registry:
Na Cloud de Confiance consola, aceda à página Instâncias de VM.
SSH para o nó no qual está a resolver problemas.
Obtenha um token de acesso para autenticação com o repositório.
curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
Extraia a imagem através de
crictl pull --credse do valoraccess_tokencrictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
ou
crictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST
O resultado tem o seguinte aspeto:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
O que se segue?
- Saiba como gerir etiquetas e eliminar imagens.
- Se quiser executar contentores no Compute Engine, saiba mais sobre os contentores no Compute Engine.
- Use
crictlpara depurar nós do Kubernetes - Saiba como usar o comando
crictlpara extrair imagens de repositórios privados do Artifact Registry - Saiba mais sobre a configuração de
crictlregistos de imagens