Skip to content
Latchkey

コンテナレジストリとは?イメージが存在する場所

コンテナレジストリはイメージの倉庫であり配布拠点です - イメージをそこへ push し、そこから pull します。

イメージをビルドしたら、それを保存する場所と、runner やサーバーと共有する手段が必要になります。それがレジストリです。イメージをリポジトリとタグで push・pull するための標準的な API を公開しており、コンテナを出荷するあらゆる CI/CD pipeline の中心的な構成要素です。

リポジトリとタグ

レジストリはリポジトリ(例: acme/web)を保持し、各リポジトリはタグ付きのイメージ(acme/web:1.4acme/web:latest)を保持します。完全な参照はレジストリのホスト、リポジトリ、タグを組み合わせたものです: ghcr.io/acme/web:1.4

push と pull

builder はイメージを docker push で上げ、runner やサーバーは docker pull で下ろします。イメージは layer 構造かつコンテンツアドレス指定であるため、欠けている layer のみが転送され、繰り返しの pull が高速に保たれます。

認証

レジストリは通常プライベートなので、まずトークンや短命な認証情報を使って docker login(またはそれを代行する action)でログインします。CI では、長命なパスワードよりも OIDC やスコープ付きトークンを優先しましょう。

一般的なレジストリ

  • Docker Hub - デフォルトのパブリックレジストリ。
  • GHCR - GitHub Container Registry、GitHub のアイデンティティに紐づく。
  • Amazon ECR、Google Artifact Registry、Azure ACR - クラウドネイティブなレジストリ。
  • Self-hosted(Harbor、オープンソースの registry)で完全な制御を。

CI におけるレジストリ

典型的な pipeline はイメージをビルドし、それをレジストリへ push し、deploy ステップがそれを pull します。レジストリの push と pull は一時的なネットワークエラーに遭遇することがあります。マネージド runner(Latchkey)はそうしたレジストリの不調を自動でリトライするため、不安定なアップロードが build 全体を失敗させることはありません。

重要なポイント

  • レジストリはイメージをリポジトリとタグで保存・配布します。
  • pull では欠けている layer のみが転送されるため、繰り返しの pull は高速です。
  • CI 認証にはスコープ付きで短命な認証情報(OIDC やトークン)を使いましょう。

関連ガイド