キャッシュに保存された Docker Hub イメージの pull

Artifact Registry は、頻繁にアクセスされる公開 Docker Hub イメージを mirror.gcr.io でキャッシュに保存します。キャッシュに保存された公開イメージが使用可能な場合はそれを使用して Docker デーモンを構成でき、キャッシュに保存されたコピーがない場合は Docker Hub からイメージを pull できます。

Cloud Build や Google Kubernetes Engine などの Google Cloud サービスは、Docker Hub からイメージを pull する前に、キャッシュに保存されたイメージを自動的に確認します。

mirror.gcr.io でキャッシュに保存されたイメージは:

  • Google 管理のリポジトリに格納されます。
  • Docker Hub の停止から保護されます。
  • Google Cloud エコシステムと容易に統合できます。
  • Docker Hub との同期が維持されます。

Docker デーモンを構成する

Artifact Registry キャッシュからイメージを pull するように Docker デーモンを構成するには:

CLI

  1. 次のいずれかの方法でデーモンを構成します。

    • スタートアップ時に Docker デーモンを自動的に構成するには、/etc/docker/daemon.json に次の値を設定します。

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • デーモンの起動時に Artifact Registry のホスト名を渡します。

      dockerd --registry-mirror=https://mirror.gcr.io
      
    • /etc/default/docker ファイルに次の行を追加します。

      DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
      
  2. Docker デーモンを再起動します。

    • Linux の場合は、次のいずれかのコマンドを実行します。

      sudo service docker restart
      

      または

      sudo service docker stop && sudo service docker start
      
    • macOS または Windows の場合は、次のコマンドを実行します。

      docker-machine restart
      

Docker UI

  1. Docker の [設定] メニューを開きます。
  2. [デーモン] をクリックします。
  3. [詳細] をクリックします。JSON フィールドに、https://mirror.gcr.io を値として registry-mirrors キーを追加します。

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. [Apply & Restart] をクリックします。

キャッシュが正しく構成されていることを確認するには、次のコマンドを実行します。

docker system info

次のように、出力に Registry Mirrors が含まれています。

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

キャッシュに保存されたイメージを pull する

Artifact Registry は頻繁にリクエストされるイメージをキャッシュに追加し、以降のリクエストで使用できるようにします。また、リクエストされなくなったイメージを定期的に削除します。

Artifact Registry キャッシュを使用するように Docker デーモンを構成した後に、docker pull コマンドを使用して公開 Docker Hub イメージを pull すると、Docker で次の手順が実行されます。

  1. Docker デーモンが Artifact Registry キャッシュをチェックし、イメージが存在する場合はイメージをフェッチします。デーモン構成に他の Docker ミラーが含まれている場合、デーモンはキャッシュに保存されたイメージのコピーが存在するかどうか各ミラーを順番に確認します。
  2. それでもイメージが見つからない場合、Docker デーモンは Docker Hub の正規リポジトリからイメージをフェッチします。

キャッシュに保存されたイメージを pull しても、Docker Hub のレート制限にはカウントされません。ただし、特定のイメージが長期間キャッシュに保存されるという保証はありません。Docker デーモンを構成することで、mirror.gcr.io でキャッシュに保存されたイメージのみが取得されます。

mirror.gcr.io でキャッシュに保存されていないイメージを取得するために Docker Hub への認証を行うには、Artifact Registry のリモート リポジトリを使用します。リモート リポジトリは Docker Hub への認証をサポートしています。公開イメージのみを使用する場合でも、Docker Hub への認証を行うことをおすすめします。この認証を行うことにより、ダウンロードのレート制限が引き上げられます。Docker Hub のダウンロード レート制限の詳細については、Docker Hub のレート制限をご覧ください。

次のステップ