Container 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 デーモンを構成する
Container Registry キャッシュからイメージを pull するように Docker デーモンを構成するには:
CLI
次のいずれかの方法でデーモンを構成します。
スタートアップ時に 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"
Docker デーモンを再起動します。
Linux の場合は、次のいずれかのコマンドを実行します。
sudo service docker restart
または
sudo service docker stop && sudo service docker start
macOS または Windows の場合は、次のコマンドを実行します。
docker-machine restart
Docker UI
- Docker の [設定] メニューを開きます。
- [デーモン] をクリックします。
[詳細] をクリックします。JSON フィールドに、
https://mirror.gcr.io
を値としてregistry-mirrors
キーを追加します。{ "registry-mirrors" : [ "https://mirror.gcr.io" ] }
[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 は頻繁にリクエストされるイメージをキャッシュに追加し、以降のリクエストで使用できるようにします。また、リクエストされなくなったイメージを定期的に削除します。
Container Registry キャッシュを使用するように Docker デーモンを構成した後は、docker pull
コマンドを使用して公開 Docker Hub イメージを pull すると、Docker で次の手順が実行されます。
- Docker デーモンが Container Registry キャッシュをチェックし、イメージが存在する場合にはイメージをフェッチします。デーモン構成に他の Docker ミラーが含まれている場合、デーモンはキャッシュに保存されたイメージのコピーが存在するかどうか各ミラーを順番に確認します。
- それでもイメージが見つからない場合、Docker デーモンは Docker Hub の正規リポジトリからイメージをフェッチします。
キャッシュに保存されたイメージを pull しても、Docker Hub のレート制限にはカウントされません。ただし、特定のイメージが長期間キャッシュに保存されるという保証はありません。Docker デーモンを構成することで、mirror.gcr.io
にキャッシュに保存されたイメージのみが取得されます。キャッシュに保存されたイメージのコピーが存在しない場合、mirror.gcr.io
から直接 pull するリクエストは失敗します。
次のステップ
- 独自のローカルな Docker ミラーを作成して、イメージをキャッシュに保存することができます。詳細については、Docker のドキュメントをご覧ください。
- Docker Hub のドキュメントを読む。