Skip to content
Latchkey

GHCR とは?GitHub Container Registry を解説

GHCR(ghcr.io)は GitHub のコンテナレジストリです - イメージはリポジトリと並んで存在し、GitHub のアイデンティティと権限モデルを継承します。

GitHub Container Registry はコンテナイメージを ghcr.io/<owner>/<image> の下に保存します。その魅力は GitHub との緊密な統合です: コードを統治するのと同じアカウント、チーム、トークンがイメージも統治し、GitHub Actions は組み込みのトークンでそこへ push できます。

参照の見た目

イメージは ghcr.io/acme/web:1.4 と名付けられ、ここで acme はユーザーまたは組織です。可視性(パブリックまたはプライベート)とアクセスは、所有するリポジトリや org にリンクされた GitHub の package 設定を通じて制御されます。

認証

トークンでログインします: personal access token、または Actions では自動的に提供される GITHUB_TOKEN。トークンの package スコープが、pull・push・delete できるかどうかを決めます。

Actions との統合

workflow では docker/login-action を使い ${{ secrets.GITHUB_TOKEN }} でログインし、それから build して push します。トークンは実行中のリポジトリにスコープされるため、同一リポジトリへの push に追加の secret 管理は不要です。

GHCR と Docker Hub

  • GHCR はアクセスを GitHub のアイデンティティとチームに紐づけます。
  • 管理すべき Docker Hub の個別のレート制限がありません。
  • package は来歴のためソースリポジトリにリンクします。

CI における GHCR

一般的な pipeline はイメージをビルドし、deploy ステップが pull できるよう GHCR へ push します。どのレジストリでも同様に、push は一時的なエラーに遭遇することがあります。マネージド runner はこれらを自動でリトライするため、不安定なアップロードが run を壊すことはありません。

重要なポイント

  • GHCR は ghcr.io にある GitHub のレジストリで、GitHub のアイデンティティに統治されます。
  • Actions はリポジトリにスコープされた組み込みの GITHUB_TOKEN を使って push できます。
  • Docker Hub のレート制限を回避し、イメージをそのソースリポジトリにリンクします。

関連ガイド