Crea un repositorio remoto de Docker Hub

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

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Artifact Registry, Secret Manager.

    Habilita las API

  5. Instala Google Cloud CLI.
  6. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  9. Habilita las API de Artifact Registry, Secret Manager.

    Habilita las API

  10. Instala Google Cloud CLI.
  11. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  12. Crea una cuenta de Docker Hub.

Funciones obligatorias

Si quieres obtener los permisos que necesitas para crear un repositorio remoto de Docker Hub, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.

Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.

Elige una 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 que se usa para administrar recursos alojados en Google Cloud. Viene preinstalado con Docker y Google Cloud CLI, la interfaz de línea de comandos principal para Google Cloud.
Shell local
Si prefieres usar tu shell local, debes instalar Docker y gcloud CLI en tu entorno.

Inicia Cloud Shell

Para iniciar Cloud Shell, sigue estos pasos:

  1. Ve a la consola de Google Cloud.

    Consola de Google Cloud

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

Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola. Usa esta shell para ejecutar los comandos de gcloud.

Configura una shell local

Para instalar gcloud CLI y Docker, sigue estos pasos:

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

  2. Instala Docker si aún no lo hiciste.

  3. Docker necesita acceso con privilegios para interactuar con los registros. En Linux o Windows, agrega el usuario que usas para ejecutar comandos de Docker al grupo de seguridad de Docker. Este paso no es obligatorio en macOS, ya que Docker Desktop se ejecuta en una máquina virtual como usuario raíz.

    Linux

    El grupo de seguridad de Docker se llama docker. Para agregar 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 agregar un usuario desde el símbolo del sistema del administrador, ejecuta el siguiente comando:

    net localgroup docker-users DOMAIN\USERNAME /add
    

    Donde

    • DOMAIN es tu dominio de Windows.
    • USERNAME es tu nombre de usuario.
  4. Sal de tu cuenta y vuelve a acceder para que se apliquen los cambios de membresía de grupo. Si utilizas una máquina virtual, es posible que tengas que reiniciarla para que se apliquen los cambios de membresía.

  5. Para asegurarte de que Docker esté funcionando, ejecuta el siguiente comando de Docker, que muestra la hora y la fecha actuales:

    docker run --rm busybox date
    

    La marca --rm borra la instancia de contenedor cuando se sale.

Configura la autenticación de Docker Hub

Para evitar el uso de la cuota de Docker Hub no autenticada, recomendamos autenticarte en Docker Hub cuando uses repositorios remotos. Los repositorios remotos te permiten agregar tu nombre de usuario de Docker Hub y un token de acceso personal guardado como secreto para autenticarte en Docker Hub.

Crea un token de acceso personal de Docker Hub

  1. Accede a 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 entorno local o en Cloud Shell.

Guarda tu token de acceso personal en un secreto

Console

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

    Ir a la página Secret Manager

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

  3. En la página Crear secreto, en Nombre, asígnale el nombre my-secret a tu secreto.

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

  5. Deja la sección Regiones sin modificar.

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

gcloud CLI

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.

Otorga a la cuenta de servicio de Artifact Registry acceso a tu secreto

Console

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

    Ir a la página Secret Manager

  2. En la página Secret Manager, haz clic en la casilla de verificación junto a my-secret.

  3. Si aún no está abierto, haz clic en Mostrar panel de información para abrir el panel.

  4. En el panel de información, haz clic en Agregar principal.

  5. En el área de texto Principales nuevas, ingresa la dirección de correo electrónico de la cuenta de servicio de Artifact Registry. La dirección de correo electrónico de la cuenta de servicio de Artifact Registry tiene el siguiente formato

    service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

    En el ejemplo anterior, PROJECT-NUMBER es el número del proyecto.

    Para encontrar el número del proyecto, sigue estos pasos:

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

      Ir a la página Panel

    • Haz clic en la lista desplegable Seleccionar desde en la parte superior de la página.

    • En la ventana Seleccionar una opción que aparece, elige tu proyecto.

      El ID y el número del proyecto se muestran en la tarjeta de Información del proyecto del panel del proyecto.

  6. En el menú desplegable Selecciona una función, selecciona Secret Manager y, luego, Administrador y descriptor de acceso a Secretos.

gcloud CLI

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 del proyecto.

Para encontrar el número del proyecto, sigue estos pasos:

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

    Ir a la página Panel

  • Haz clic en la lista desplegable Seleccionar desde en la parte superior de la página.

  • En la ventana Seleccionar una opción que aparece, elige tu proyecto.

    El ID y el número del proyecto se muestran en la tarjeta de Información del proyecto del panel del proyecto.

Crea un repositorio remoto

Ejecuta el siguiente comando para crear un repositorio remoto de Artifact Registry llamado quickstart-docker-hub-remote en la ubicación us-central1 con tus credenciales de Docker Hub:

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 para cada ubicación de repositorio de un proyecto.
  • PROJECT_ID es el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • us-central1 es la ubicación regional o multirregional del repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones compatibles, 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 encriptadas.
  • "Docker Hub" es la descripción opcional para la configuración del repositorio externo de este repositorio remoto.
  • DOCKER-HUB establece el repositorio remoto en sentido ascendente en el Docker Hub público.
  • USERNAME es tu nombre de usuario de Docker Hub.
  • projects/PROJECT/secrets/my-secret/versions/1 es la versión del secreto que creaste para almacenar tu token de acceso personal de Docker Hub.

Artifact Registry crea el repositorio y lo agrega a la lista de repositorios.

Configura la autenticación de Docker

Antes de poder enviar o extraer imágenes, debes configurar Docker para que use Google Cloud CLI a fin de autenticar las solicitudes a Artifact Registry.

  1. Accede a 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 en 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 puedes conectarte con Artifact Registry en tu proyecto de Google Cloud para enviar y extraer imágenes.

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

Extrae una imagen a tu repositorio remoto

  1. Accede a 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 para el repositorio de Docker que creaste.
    • PROJECT es el ID del proyecto de Google Cloud. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.
    • quickstart-docker-hub-remote es el ID del repositorio que creaste.
    • busybox es el nombre de la imagen que deseas extraer de Docker Hub a quickstart-docker-hub-remote.
    • latest es la versión de imagen etiquetada que deseas extraer de Docker Hub.

    La imagen se extrae a 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. Enumera los artefactos almacenados en tu repositorio remoto:

    gcloud artifacts packages list \
        --location=us-central1 \
        --repository=quickstart-docker-hub-remote
    

    El resultado se ve de la manera 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
    

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página.

Borra tu repositorio

Si deseas conservar tu proyecto y solo borrar el recurso del repositorio, sigue los pasos de esta sección. Si quieres borrar todo tu proyecto, sigue los pasos que se indican en Cómo borrar tu proyecto.

Antes de quitar el repositorio, asegúrate de que las imágenes que quieres conservar estén disponibles en otra ubicación.

Para borrar el repositorio, haz lo siguiente:

Consola

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

    Abrir la página Repositorios

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

  3. Haz clic en Borrar.

gcloud

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

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

Borra tu proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?