GitHub Container Registry(ghcr.io)は、GitHub が提供するコンテナイメージの保管場所です。 Docker イメージを push / pull でき、GitHub のリポジトリや組織と権限が連動します。
Docker Hub と何が違うのか
いちばん大きいのは権限の扱いです。ghcr.io のイメージは GitHub の組織・チーム・リポジトリの権限と結びつけられるため、「このリポジトリに触れる人だけがイメージも取得できる」という状態を、別途アカウント管理をせずに作れます。
もう1つは GitHub Actions との近さです。ワークフローの中で自動発行されるトークンを使って認証できるので、イメージの push のために外部サービスの認証情報を Secrets へ置く必要がありません。
取得制限を避ける受け皿として
Docker Hub には未認証で6時間あたり100回という取得制限があり、CI が「toomanyrequests」で落ちる原因になります。自分たちで使うイメージを ghcr.io へ寄せるのは、この問題への現実的な対処のひとつです。
公開範囲の設定を必ず確認する
ここが最大の注意点です。イメージの公開設定は、元のリポジトリが private でも自動的に private になるとは限りません。push した後に、パッケージ側の可視性を必ず確認してください。
社内向けのイメージが public になっていると、中に含めた設定ファイルや依存関係の構成がそのまま外から見えます。Dockerfile の書き方によっては認証情報が層に残っていることもあり、影響は小さくありません。
実務で見るポイント
- イメージ名は
ghcr.io/<オーナー>/<名前>:<タグ>の形になる - タグは固定する。
latestを本番で参照しない - 使わなくなった古いバージョンは定期的に削除する(保管容量を消費する)
- 料金や保管容量の条件は変わりうるので、業務利用の前に GitHub の最新の料金ページを確認する