Extraer imágenes de Docker Hub almacenadas en caché

Container Registry almacena en caché las imágenes públicas de Docker Hub a las que se accede con frecuencia en mirror.gcr.io. Puedes configurar el daemon de Docker para que use una imagen pública almacenada en caché si hay alguna disponible o para que extraiga la imagen de Docker Hub si no hay ninguna copia almacenada en caché.

Google Cloud Servicios como Cloud Build y Google Kubernetes Engine comprueban automáticamente si hay imágenes almacenadas en caché antes de intentar extraer una imagen de Docker Hub.

Las imágenes almacenadas en caché a las mirror.gcr.io son:

  • Se almacenan en un repositorio que gestiona Google.
  • Mayor aislamiento frente a las interrupciones de Docker Hub.
  • Se integra fácilmente con el ecosistema de Google Cloud .
  • Se mantiene sincronizado con Docker Hub.

Configurar el daemon de Docker

Para configurar el daemon de Docker de forma que extraiga imágenes de la caché de Container Registry, sigue estos pasos:

CLI

  1. Configure el daemon de una de las siguientes formas:

    • Para configurar el daemon de Docker automáticamente al inicio, define el siguiente valor en /etc/docker/daemon.json:

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • Cuando inicies el daemon, introduce el nombre de host de Container Registry:

      dockerd --registry-mirror=https://mirror.gcr.io
      
    • Añade la siguiente línea a tu archivo /etc/default/docker:

      DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
      
  2. Reinicia el daemon de Docker.

    • En Linux, ejecuta uno de los siguientes comandos:

      sudo service docker restart
      

      o

      sudo service docker stop && sudo service docker start
      
    • En macOS o Windows, ejecuta el siguiente comando:

      docker-machine restart
      

Interfaz de Docker

  1. Abre el menú Preferencias de Docker.
  2. Haz clic en Daemon.
  3. Haz clic en Avanzado. En el campo JSON, añade una clave registry-mirrors con https://mirror.gcr.io como valor:

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. Haz clic en Aplicar y reiniciar.

Para verificar que la caché está configurada correctamente, ejecuta el siguiente comando:

docker system info

El resultado debe incluir Registry Mirrors y tener un aspecto similar al siguiente:

Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 2
Server Version: 17.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
...
Registry Mirrors:
 https://mirror.gcr.io

Extraer imágenes almacenadas en caché

Container Registry añade al caché las imágenes que se solicitan con frecuencia para que estén disponibles en futuras solicitudes. También elimina periódicamente las imágenes que ya no se solicitan.

Después de configurar el daemon de Docker para que use la caché de Container Registry, Docker sigue estos pasos cuando extraes una imagen pública de Docker Hub con un comando docker pull:

  1. El daemon de Docker comprueba la caché de Container Registry y obtiene las imágenes si existen. Si la configuración de tu daemon incluye otros espejos de Docker, el daemon comprueba cada uno de ellos en orden para buscar una copia en caché de la imagen.
  2. Si la imagen sigue sin encontrarse, el daemon de Docker la obtiene del repositorio canónico de Docker Hub.

Extraer imágenes almacenadas en caché no se tiene en cuenta en los límites de frecuencia de Docker Hub. Sin embargo, no se garantiza que una imagen concreta permanezca en la caché durante un periodo prolongado. Solo se obtienen imágenes almacenadas en caché en mirror.gcr.io si configuras el daemon de Docker. Una solicitud para extraer contenido directamente de mirror.gcr.io fallará si no existe una copia en caché de la imagen.

Siguientes pasos