Pode usar a ferramenta gcrane
para copiar imagens entre repositórios do Docker no
Artifact Registry.
Antes de começar
Valide os seguintes requisitos:
Criou o repositório Docker de destino no Artifact Registry para as imagens que está a copiar.
Tem as autorizações necessárias:
Leitor do Artifact Registry (
roles/storage.objectViewer
) ou uma função com autorizações equivalentes para o repositório a partir do qual está a copiar.Escritor do Artifact Registry (
roles/artifactregistry.writer
) ou uma função com autorizações equivalentes para o repositório de destino.
Vista geral
A ferramenta gcrane simplifica a cópia entre repositórios com suporte para:
- Copiar conjuntos de imagens com um único comando, incluindo todas as imagens num caminho especificado ou todas as imagens armazenadas no anfitrião multirregional no seu projeto.
- Ignorar camadas de imagens que já foram carregadas.
Remover imagens não usadas
A remoção de imagens não usadas antes de realizar uma operação de cópia pode ajudar a reduzir os custos de armazenamento.
Estão disponíveis várias ferramentas para identificar e automatizar a remoção de imagens de que já não precisa. Por exemplo, a ferramenta
gcr-cleaner
ajuda a encontrar e remover imagens antigas com base em diferentes critérios.
A ferramenta gcr-cleaner
não é um produto oficial da Google.
Para mais informações sobre a configuração e a utilização da ferramenta, consulte a documentação do gcr-cleaner.
Configurar o gcrane
Pode executar o gcrane
nos seguintes ambientes:
Instância do Compute Engine: use esta opção se tiver um número maior de contentores para copiar.
Custos: tempo de atividade da instância para a VM do Compute Engine. Se a instância de VM estiver numa localização diferente da do repositório de origem, podem aplicar-se custos de saída da rede às imagens que copiar.
Recomendamos que use a versão mais recente da ferramenta gcrane
para tirar partido
de todas as funcionalidades e melhorias disponíveis. As instruções de configuração nas secções seguintes incluem passos para transferir a versão mais recente.
Para verificar a versão de uma instalação do gcrane existente, execute o comando:
gcrane version
Configurar o Compute Engine
Para copiar imagens com gcrane
de uma instância de VM do Compute Engine:
- Crie uma instância de VM. Para minimizar os custos, crie a instância na mesma localização que o registo do qual está a copiar.
Por predefinição, a instância de VM está associada à conta de serviço predefinida e tem autorizações para obter imagens. Tem de alterar o âmbito de acesso para que a instância de VM possa enviar imagens.
Pare a instância de VM. Consulte o artigo Parar uma instância.
Altere o âmbito de acesso com o comando:
gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
Substitua INSTANCE pelo nome da instância de VM.
Reinicie a instância de VM. Consulte o artigo Iniciar uma instância parada.
Estabeleça ligação à instância de VM através de SSH.
Execute o seguinte comando para transferir o
gcrane
.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Execute os seguintes comandos para tornar o comando
gcrane
executável.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Execute o comando
gcrane --help
para validar a instalação.
Já tem tudo pronto para copiar imagens. Para continuar:
Configurar uma máquina local
Transfira
gcrane
do repositório do GitHub. Por exemplo, o seguinte comando transfere a distribuição Linux x86-64 a partir da linha de comandos.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Execute os seguintes comandos para tornar o comando
gcrane
executável. Os comandos partem do princípio de que o ficheiro transferido tem o nomego-containerregistry.tar.gz
.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Execute o comando
gcrane --help
para validar a instalação.
Já tem tudo pronto para copiar imagens. Para continuar:
Identificar imagens para copiar
Depois de instalar a ferramenta gcrane
, pode listar as imagens existentes no repositório de origem para encontrar as que quer copiar.
Para apresentar uma lista de imagens existentes, execute o comando:
gcrane ls LOCATION-docker.s3nsregistry.fr/PROJECT/REPOSITORY
Para listar as etiquetas que uma imagem tem, execute o comando:
gcrane ls LOCATION-docker.s3nsregistry.fr/PROJECT/IMAGE
Para listar imagens recursivamente num caminho específico, execute o comando:
gcrane ls -r LOCATION-docker.s3nsregistry.fr/PROJECT/PATH
Para cada um dos comandos:
- Substitua LOCATION pela localização do repositório.
- Substitua PROJECT pelo ID do projeto.
- Substitua PATH pelo caminho a copiar.
Consulte o artigo Copiar imagens para ver os comandos para copiar as suas imagens.
Copiar imagens
Pode copiar imagens individuais ou conjuntos de imagens com o comando gcrane cp
.
Para copiar uma única imagem, execute o comando:
gcrane cp LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2
Para copiar imagens recursivamente num caminho específico de um repositório, execute o comando:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1/PATH1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2/PATH2
Para copiar todas as imagens num repositório, execute o comando:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2
Substitua os seguintes valores:
- LOCATION1 é a localização do repositório de origem.
- LOCATION2 é a localização do repositório de destino.
- PROJECT1 é o Trusted Cloud ID do projeto associado ao repositório de origem.
- PROJECT2 é o Trusted Cloud ID do projeto associado ao repositório de destino.
- REPOSITORY1 é o nome do repositório de origem.
- REPOSITORY2 é o nome do repositório de destino.
- IMAGE1 é a imagem que quer copiar.
- IMAGE2 é o nome da imagem no repositório de destino.
Exemplos
O comando seguinte copia my-image:tag1
do repositório repo1
para o repositório repo2
no mesmo projeto e região.
gcrane cp u-france-east1-docker.s3nsregistry.fr/my-project/repo1/my-image:tag1 \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/my-image:tag1
O comando seguinte copia recursivamente todas as imagens em test-images/testing
no repositório repo1
para o mesmo caminho no repositório repo2
.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/my-project/repo1/test-images/testing \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/test-images/testing
O comando seguinte copia todas as imagens do repositório my-repo
no projeto dev-project
para o repositório my-repo
noutro projeto denominado prod-project
.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/dev-project/my-repo \
u-france-east1-docker.s3nsregistry.fr/prod-project/my-repo