Como extrair imagens do Docker Hub armazenadas em cache

O Container Registry armazena em cache as imagens públicas do Docker Hub acessadas com frequência em mirror.gcr.io. Você pode configurar o daemon do Docker para usar uma imagem pública armazenada em cache, se houver uma disponível, ou extrair a imagem do Docker Hub se uma cópia em cache não estiver disponível.

Os serviços do Google Cloud, como o Cloud Build e o Google Kubernetes Engine, verificam automaticamente se há imagens em cache antes de tentar extrair uma imagem do Docker Hub.

Imagens em cache em mirror.gcr.io são:

  • armazenadas em um repositório gerenciado pelo Google;
  • mais protegidas das interrupções do Docker Hub;
  • integradas facilmente ao ecossistema do Google Cloud;
  • Sincronizadas com o Docker Hub.

Como configurar o daemon do Docker

Para configurar o daemon do Docker para extrair imagens do cache do Container Registry:

CLI

  1. Configure o daemon de uma das seguintes maneiras:

    • Para configurar o daemon do Docker automaticamente na inicialização, defina o seguinte valor em /etc/docker/daemon.json

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • Ao iniciar o daemon, passe no nome do host do Container Registry:

      dockerd --registry-mirror=https://mirror.gcr.io
      
    • Adicione a linha a seguir ao arquivo /etc/default/docker:

      DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
      
  2. Reinicie o daemon do Docker.

    • No Linux, execute um dos seguintes comandos:

      sudo service docker restart
      

      ou

      sudo service docker stop && sudo service docker start
      
    • No macOS ou Windows, execute o seguinte comando:

      docker-machine restart
      

IU do Docker

  1. Abra o menu Preferences do Docker.
  2. Clique em Daemon.
  3. Clique em Advanced. No campo JSON, adicione uma chave registry-mirrors com https://mirror.gcr.io como um valor:

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. Clique em Apply & Restart.

Para verificar se o cache está configurado corretamente, execute:

docker system info

A saída deve incluir Registry Mirrors e deve ser semelhante a esta:

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

Como extrair imagens armazenadas em cache

O Container Registry adiciona imagens solicitadas com frequência ao cache para que elas sejam disponibilizadas para solicitações futuras. Ele também remove periodicamente imagens que não são mais solicitadas.

Depois de configurar o daemon do Docker para usar o cache do Container Registry, o Docker executará as seguintes etapas quando você extrair uma imagem pública do Docker Hub com um comando docker pull:

  1. O daemon do Docker verifica o cache do Container Registry e busca as imagens, se elas existirem. Se a configuração do daemon incluir outros espelhos do Docker, ele verificará cada um deles para uma cópia em cache da imagem.
  2. Se a imagem ainda não for encontrada, o daemon do Docker busca a imagem no repositório canônico no Docker Hub.

Extrair imagens em cache não é contabilizado em limites de taxa do Docker Hub. No entanto, não há garantia de que uma imagem específica será armazenada em cache por um longo período. Consiga imagens em cache em mirror.gcr.io configurando o daemon do Docker. Uma solicitação para extrair diretamente do mirror.gcr.io falhará se não existir uma cópia em cache da imagem.

A seguir