Crear un repositorio remoto de Docker Hub
Crea un repositorio remoto que actúe como proxy de Docker Hub.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Crea una cuenta de Docker Hub.
-
Para crear repositorios remotos y conceder acceso a repositorios concretos, sigue estos pasos:
Administrador de Artifact Registry (
roles/artifactregistry.admin
) en el proyecto -
Para crear y gestionar secretos, necesitas:
Rol de administrador de Secret Manager (
roles/secretmanager.admin
) en el proyecto - Cloud Shell
- Cloud Shell es un entorno de shell para gestionar recursos alojados en Google Cloud. Viene preinstalada con Docker y la CLI de Google Cloud, la interfaz de línea de comandos principal de Google Cloud.
- Shell local
- Si prefieres usar tu shell local, debes instalar Docker y la CLI de gcloud en tu entorno.
Ve a la Google Cloud consola.
Haz clic en el botón Activar Cloud Shell:
.
Instala gcloud CLI. Para actualizar una instalación, ejecuta el comando
gcloud components update
.Instala Docker si aún no lo has hecho.
Docker requiere acceso con privilegios para interactuar con los registros. En Linux o Windows, añade el usuario que usas para ejecutar comandos de Docker al grupo de seguridad de Docker. Este paso no es necesario en macOS, ya que Docker Desktop se ejecuta en una máquina virtual como usuario root.
Linux
El grupo de seguridad de Docker se llama
docker
. Para añadir tu nombre de usuario, ejecuta el siguiente comando:sudo usermod -a -G docker ${USER}
Windows
El grupo de seguridad de Docker se llama
docker-users
. Para añadir un usuario desde la petición de comando del administrador, ejecuta el siguiente comando:net localgroup docker-users DOMAIN\USERNAME /add
Dónde
- DOMAIN es tu dominio de Windows.
- USERNAME es tu nombre de usuario.
Cierra sesión y vuelve a iniciarla para que se apliquen los cambios en la pertenencia a grupos. Si usas una máquina virtual, es posible que tengas que reiniciarla para que los cambios en la suscripción surtan efecto.
Para asegurarte de que Docker se está ejecutando, ejecuta el siguiente comando de Docker, que devuelve la hora y la fecha actuales:
docker run --rm busybox date
La marca
--rm
elimina la instancia del contenedor al salir.- Inicia sesión en Docker Hub.
- Crea un token de acceso personal con permisos de solo lectura.
Copia el token de acceso.
Guarda el token de acceso en un archivo de texto en tu sistema local o en Cloud Shell.
-
Ve a la página Secret Manager en la Google Cloud consola.
-
En la página Secret Manager, haz clic en Crear secreto.
-
En la página Crear secreto, en Nombre, asigna un nombre al secreto
my-secret
. -
En el campo Valor secreto, introduce tu token de acceso personal de Docker Hub.
-
No modifiques la sección Regiones.
-
Haz clic en el botón Crear secreto.
-
Ve a la página Secret Manager en la Google Cloud consola.
-
En la página Secret Manager, marca la casilla situada junto a
my-secret
. -
Si aún no lo has hecho, haz clic en Mostrar panel de información para abrirlo.
-
En el panel de información, haz clic en Añadir principal.
-
En el área de texto Nuevos principales, introduce la dirección de correo de la cuenta de servicio de Artifact Registry. La dirección de correo de la cuenta de servicio de Artifact Registry tiene el siguiente formato:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
donde PROJECT-NUMBER es el número de tu proyecto.
Para encontrar tu número de proyecto, sigue estos pasos:
-
Ve a la página Panel de control de la Google Cloud consola.
-
En la parte superior de la página, haz clic en la lista desplegable Seleccionar de.
-
En la ventana Seleccionar de que aparece, selecciona tu proyecto.
El ID y el número del proyecto se muestran en la tarjeta Información del proyecto del panel de control del proyecto.
-
-
En el menú desplegable Selecciona un rol, elige Secret Manager y, a continuación, Permiso para acceder a los recursos de Secret Manager.
-
Ve a la página Panel de control de la Google Cloud consola.
-
En la parte superior de la página, haz clic en la lista desplegable Seleccionar de.
-
En la ventana Seleccionar de que aparece, selecciona tu proyecto.
El ID y el número del proyecto se muestran en la tarjeta Información del proyecto del panel de control del proyecto.
quickstart-docker-hub-remote
es el nombre del repositorio. Los nombres de los repositorios deben ser únicos en cada ubicación de repositorio de un proyecto.PROJECT_ID
es el ID del proyecto. Si se omite esta marca, se usará el proyecto actual o el predeterminado.us-central1
es la ubicación regional o multirregional del repositorio. Puedes omitir esta marca si defines un valor predeterminado. Para ver una lista de las ubicaciones admitidas, ejecuta el comandogcloud artifacts locations list
."Remote Docker repository"
es la descripción opcional de tu repositorio. No incluyas datos sensibles, ya que las descripciones de los repositorios no están cifradas."Docker Hub"
es la descripción opcional de la configuración del repositorio externo de este repositorio remoto.DOCKER-HUB
define el repositorio remoto como upstream del Docker Hub público. upstream.- USERNAME es tu nombre de usuario de Docker Hub.
projects/PROJECT/secrets/my-secret/versions/1
es la versión secreta que has creado para almacenar tu token de acceso personal de Docker Hub.Inicia sesión en gcloud CLI como el usuario que ejecutará los comandos de Docker.
gcloud auth login
Para configurar la autenticación en los repositorios de Docker de la región
us-central1
, ejecuta el siguiente comando:gcloud auth configure-docker us-central1-docker.pkg.dev
El comando actualiza tu configuración de Docker. Ahora puede conectarse a Artifact Registry en su Google Cloud proyecto para insertar y extraer imágenes.
Inicia sesión en gcloud CLI como el usuario que ejecutará los comandos de Docker.
gcloud auth login
Extrae una imagen de Docker Hub a tu máquina y a tu repositorio remoto con el siguiente comando:
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latest
Donde:
us-central1
es la ubicación del repositorio remoto.us-central1-docker.pkg.dev
es el nombre de host del repositorio de Docker que has creado.- PROJECT es tu Google Cloud
ID de proyecto.
Si el ID de tu proyecto contiene dos puntos (
:
), consulta Proyectos con ámbito de dominio. quickstart-docker-hub-remote
es el ID del repositorio que has creado.busybox
es el nombre de la imagen que quieres extraer de Docker Hub aquickstart-docker-hub-remote
.latest
es la versión de la imagen etiquetada que quieres extraer de Docker Hub.
La imagen se extrae en tu máquina y se almacena en caché en el repositorio remoto. Si vuelves a extraer la misma imagen etiquetada, se extraerá de tu repositorio remoto. Se usan tus credenciales de Docker Hub.
Lista los artefactos almacenados en tu repositorio remoto:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remote
La salida es similar a la siguiente:
Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote. PACKAGE: busybox CREATE_TIME: 2023-06-19T18:59:09 UPDATE_TIME: 2023-06-19T18:59:10
Abre la página Repositorios en la consola de Google Cloud .
En la lista de repositorios, selecciona el repositorio
quickstart-docker-hub-remote
.Haz clic en Eliminar.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Consulta información sobre los distintos modos de repositorio de Artifact Registry.
- Consulta más información sobre los repositorios remotos de Artifact Registry.
- Más información sobre CI/CD
Roles obligatorios
Para obtener los permisos que necesitas para crear un repositorio remoto de Docker Hub, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Elige un shell
Para completar esta guía de inicio rápido, usa Cloud Shell o tu shell local.
Iniciar Cloud Shell
Para iniciar Cloud Shell, sigue estos pasos:
Se abrirá una sesión de Cloud Shell en un marco de la parte inferior de la consola.
Esta shell se usa para ejecutar comandos gcloud
.
Configurar un shell local
Para instalar gcloud CLI y Docker, sigue estos pasos:
Configurar la autenticación de Docker Hub
Para evitar usar la cuota de Docker Hub sin autenticar, te recomendamos que te autentiques en Docker Hub cuando uses repositorios remotos. Los repositorios remotos te permiten añadir tu nombre de usuario de Docker Hub y un token de acceso personal guardado como secreto para autenticarte en Docker Hub.
Crear un token de acceso personal de Docker Hub
Guarda tu token de acceso personal en un secreto
consola
CLI de gcloud
gcloud secrets create my-secret --data-file="/path/to/file.txt"
Donde /path/to/file.txt
es la ubicación del archivo de texto con tu token de acceso personal.
Concede acceso a tu secreto a la cuenta de servicio de Artifact Registry
consola
CLI de gcloud
gcloud secrets add-iam-policy-binding my-secret \ --member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Donde PROJECT-NUMBER es el número de proyecto.
Para encontrar tu número de proyecto, sigue estos pasos:
Crear un repositorio remoto
Crea un repositorio remoto de Artifact Registry llamado quickstart-docker-hub-remote
en la ubicación us-central1
con tus credenciales de Docker Hub ejecutando el siguiente comando:
gcloud artifacts repositories create quickstart-docker-hub-remote \
--project=PROJECT_ID \
--repository-format=DOCKER \
--location=us-central1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-docker-repo=DOCKER-HUB \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1
Donde:
Artifact Registry crea el repositorio y lo añade a la lista de repositorios.
Configurar la autenticación de Docker
Antes de poder enviar o extraer imágenes, configura Docker para que use la CLI de Google Cloud con el fin de autenticar las solicitudes a Artifact Registry.
Para obtener información sobre otros métodos de autenticación, consulta Métodos de autenticación.
Extraer una imagen en tu repositorio remoto
Limpieza
Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.
Eliminar un repositorio
Si quieres conservar tu proyecto y solo eliminar el recurso del repositorio, sigue los pasos que se indican en esta sección. Si quieres eliminar todo el proyecto, sigue los pasos que se indican en Eliminar un proyecto.
Antes de quitar el repositorio, asegúrate de que las imágenes que quieras conservar estén disponibles en otra ubicación.
Para eliminar el repositorio, sigue estos pasos:
Consola
gcloud
Para eliminar el repositorio quickstart-docker-hub-remote
, ejecuta el siguiente comando:
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1