Extrair imagens em cache do Docker Hub

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

Google Cloud serviços como o Cloud Build e o Google Kubernetes Engine verificam automaticamente se existem imagens em cache antes de tentarem obter uma imagem do Docker Hub.

As imagens em cache em mirror.gcr.io são:

  • Armazenados num repositório gerido pela Google.
  • Mais isolado de indisponibilidades do Docker Hub.
  • Integração fácil com o Google Cloud ecossistema.
  • Mantido sincronizado com o Docker Hub.

Configurar o daemon do Docker

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

CLI

  1. Configure o daemon de uma das seguintes formas:

    • Para configurar o daemon do Docker automaticamente no arranque, defina o seguinte valor em /etc/docker/daemon.json

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • Quando iniciar o daemon, transmita o nome do anfitrião do Container Registry:

      dockerd --registry-mirror=https://mirror.gcr.io
      
    • Adicione a seguinte linha ao ficheiro /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 Preferências do Docker.
  2. Clique em Daemon.
  3. Clique em Avançadas. No campo JSON, adicione uma chave registry-mirrors com https://mirror.gcr.io como valor:

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. Clique em Aplicar e reiniciar.

Para verificar se a cache está configurada corretamente, execute o seguinte comando:

docker system info

O resultado deve incluir Registry Mirrors e ser semelhante ao seguinte:

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

Extrair imagens em cache

O Container Registry adiciona imagens pedidas com frequência à cache para que fiquem disponíveis para pedidos futuros. Também remove periodicamente imagens que já não são pedidas.

Depois de configurar o daemon do Docker para usar a cache do Container Registry, o Docker executa os seguintes passos quando extrai uma imagem pública do Docker Hub com um comando docker pull:

  1. O daemon Docker verifica a cache do Container Registry e obtém as imagens, se existirem. Se a configuração do daemon incluir outros espelhos do Docker, o daemon verifica cada um por ordem de uma cópia em cache da imagem.
  2. Se a imagem ainda não for encontrada, o daemon do Docker obtém a imagem do repositório canónico no Docker Hub.

A obtenção de imagens em cache não é contabilizada para os limites de taxa do Docker Hub. No entanto, não existe garantia de que uma imagem específica permaneça em cache durante um período prolongado. Obtenha apenas imagens em cache no mirror.gcr.io configurando o daemon do Docker. Um pedido de obtenção direta de mirror.gcr.io falha se não existir uma cópia em cache da imagem.

O que se segue?