GHCR vs Amazon ECR: CIに適したregistryはどちら?
GHCRはGitHub Actionsとシームレスに統合される。ECRはAWSのdeployおよびIAMと統合される - deploy先が通常決め手となる。
GitHub Container Registry(GHCR)は、Actionsの組み込みauthとともに、GitHubリポジトリと並べてイメージを保存します。Amazon ECRはAWSのregistryで、IAMおよびAWSのcompute(ECS、EKS、Lambda)と密に統合されています。
| GHCR | Amazon ECR | |
|---|---|---|
| CIでのauth | GITHUB_TOKEN 組み込み | AWS IAM / OIDC |
| 最も密な統合 | GitHub Actions | AWS compute (ECS/EKS/Lambda) |
| コストモデル | GitHubプランのstorage/egress | AWSのstorage + データ転送 |
| AWSへのpull速度 | インターネット経由 | in-region、AWSへ高速 |
| 最適な用途 | GitHub中心のworkflow | AWSへのdeploy |
CIでは
組み込みのGITHUB_TOKENでGHCR経由のpushとpullを行うのは、GitHub Actions内では摩擦がありません。ECRはAWSにdeployする場合の自然な選択肢です。イメージはECS/EKS/Lambdaの隣にin-regionで存在し、高速でIAMスコープのpullが可能で、ActionsからAWSへのOIDCが長期の鍵を回避します。決め手は通常、イメージがどこにdeployされるかです。
パイプラインでの選び方
AWSのcomputeにdeployする: in-region pullとIAMにはECR。GitHub中心のworkflowや非AWSのターゲット: 組み込みのauthにはGHCR。一部のチームは一度buildして両方へpushします - 共有にはGHCR、AWSへのdeployにはECR。
結論
AWSにdeployする: in-regionでIAMスコープのpullにはECR。GitHub中心または非AWS: 組み込みのActions authにはGHCR。deploy先に選ばせ、両方へpushすることも検討しましょう。
関連ガイド
GHCR vs Docker Hub for CI: Rate Limits, Auth & SpeedGitHub Container Registry vs Docker Hub for CI: rate limits, authentication, and integration. Which registry…
Docker vs Podman: Which for Building Images in CI?Docker vs Podman for CI: daemon vs daemonless, rootless builds, compatibility, and security. Which container…
How to Cache Docker Layers in GitHub ActionsSpeed up Docker builds in GitHub Actions with BuildKit registry cache - cache-from/cache-to, gha cache backen…