Crear un repositorio remoto de Docker Hub

Crea un repositorio remoto que actúe como proxy de Docker Hub.

Antes de empezar

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Crea una cuenta de Docker Hub.
  15. 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.

    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.

    Iniciar Cloud Shell

    Para iniciar Cloud Shell, sigue estos pasos:

    1. Ve a la Google Cloud consola.

      Google Cloud console

    2. Haz clic en el botón Activar Cloud Shell:  .

    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:

    1. Instala gcloud CLI. Para actualizar una instalación, ejecuta el comando gcloud components update.

    2. Instala Docker si aún no lo has hecho.

    3. 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.
    4. 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.

    5. 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.

    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

    1. Inicia sesión en Docker Hub.
    2. Crea un token de acceso personal con permisos de solo lectura.
    3. Copia el token de acceso.

    4. Guarda el token de acceso en un archivo de texto en tu sistema local o en Cloud Shell.

    Guarda tu token de acceso personal en un secreto

    consola

    1. Ve a la página Secret Manager en la Google Cloud consola.

      Ve a la página Secret Manager.

    2. En la página Secret Manager, haz clic en Crear secreto.

    3. En la página Crear secreto, en Nombre, asigna un nombre al secreto my-secret.

    4. En el campo Valor secreto, introduce tu token de acceso personal de Docker Hub.

    5. No modifiques la sección Regiones.

    6. Haz clic en el botón Crear secreto.

    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

    1. Ve a la página Secret Manager en la Google Cloud consola.

      Ve a la página Secret Manager.

    2. En la página Secret Manager, marca la casilla situada junto a my-secret.

    3. Si aún no lo has hecho, haz clic en Mostrar panel de información para abrirlo.

    4. En el panel de información, haz clic en Añadir principal.

    5. 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.

        Ir a la página Panel de control

      • 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.

    6. En el menú desplegable Selecciona un rol, elige Secret Manager y, a continuación, Permiso para acceder a los recursos de Secret Manager.

    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:

    • Ve a la página Panel de control de la Google Cloud consola.

      Ir a la página Panel de control

    • 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.

    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:

    • 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 comando gcloud 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.

    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.

    1. Inicia sesión en gcloud CLI como el usuario que ejecutará los comandos de Docker.

      gcloud auth login
      
    2. 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.

    Para obtener información sobre otros métodos de autenticación, consulta Métodos de autenticación.

    Extraer una imagen en tu repositorio remoto

    1. Inicia sesión en gcloud CLI como el usuario que ejecutará los comandos de Docker.

      gcloud auth login
      
    2. 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 a quickstart-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.

    3. 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
      

    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

    1. Abre la página Repositorios en la consola de Google Cloud .

      Abre la página Repositorios.

    2. En la lista de repositorios, selecciona el repositorio quickstart-docker-hub-remote.

    3. Haz clic en Eliminar.

    gcloud

    Para eliminar el repositorio quickstart-docker-hub-remote, ejecuta el siguiente comando:

    gcloud artifacts repositories delete quickstart-docker-hub-remote \
        --location=us-central1

    Eliminar un proyecto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Siguientes pasos