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

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

Container Registry ミラーでキャッシュに保存されたイメージは次のとおりです。

  • Google 所有のリポジトリに格納されます。
  • Docker Hub の停止から保護されます。
  • Google Cloud エコシステムと容易に統合できます。
  • Docker Hub との同期が維持されます。Docker Hub での変更は、Container Registry ミラーにより、30 分以内に取得されます。

Docker デーモンの構成

Container Registry ミラーからイメージを pull するように Docker デーモンを構成するには:

CLI

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

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

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • デーモンの起動時に Container 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 する

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

特定のイメージが長期間キャッシュに保存される保証はないため、Docker デーモンを構成してミラーを使用するだけで、mirror.gcr.io から直接 pull するのではなくキャッシュに保存されたイメージを確認できます。

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

  • Docker デーモンは Container Registry ミラーをチェックし、存在する場合はイメージをフェッチします。複数のミラーを構成している場合、Docker デーモンはイメージが見つかるまで各ミラーをチェックします。
  • イメージが見つからない場合、Docker デーモンは Docker Hub の正規リポジトリからイメージをフェッチします。

ミラーリングされたイメージの一覧の表示

リポジトリのリストや、特定のリポジトリのタグとダイジェストのリストを表示できます。

  • Container Registry ミラーにあるリポジトリの一覧を表示するには、次のコマンドを実行します。

    gcloud container images list --repository=mirror.gcr.io
    

    このコマンドを実行すると、mirror.gcr.io 直下にあるリポジトリのリストが表示されます。これらのリポジトリの一部はネストされています。たとえば、mirror.gcr.io/library の下にはさらに多くのリポジトリがネストされています。

    ネストされたリポジトリのリストを表示するには、次のコマンドを実行します。

    gcloud container images list --repository=REPOSITORY
    

    REPOSITORYmirror.gcr.io の下にあるリポジトリです。例: mirror.gcr.io/library

    このコマンドを実行すると、指定したリポジトリの直下にあるリポジトリの一覧が表示されます。

  • これらのリポジトリのいずれかに含まれるタグとダイジェストを表示するには、次のコマンドを実行します。

    gcloud container images list-tags mirror.gcr.io/REPOSITORY
    

    REPOSITORY は、mirror.gcr.io の下にネストされているリポジトリです。

次のステップ