Dockerレジストリ認証
Docker Hub、GitHub Container Registry(GHCR)、AWS ECR、Google Artifact Registryへの認証。CI/CDパイプラインでの安全な認証情報管理を学びます。
Registry
詳細な説明
レジストリへのログイン
Docker Hub
# インタラクティブログイン
docker login
# アクセストークンを使用(パスワードより推奨)
echo $DOCKER_HUB_TOKEN | docker login -u myuser --password-stdin
GitHub Container Registry(GHCR)
echo $GITHUB_PAT | docker login ghcr.io -u USERNAME --password-stdin
AWS ECR
# ログイントークンを取得(12時間で期限切れ)
aws ecr get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com
Google Artifact Registry
gcloud auth configure-docker us-docker.pkg.dev
# サービスアカウントキーを使用:
cat key.json | docker login -u _json_key --password-stdin https://us-docker.pkg.dev
Azure Container Registry
az acr login --name myregistry
# サービスプリンシパルを使用:
docker login myregistry.azurecr.io -u $SP_APP_ID --password-stdin <<< $SP_PASSWORD
セキュリティベストプラクティス
- スクリプトで
-pフラグをパスワードに使用しないこと。常に--password-stdinを使用 - アカウントパスワードの代わりにアクセストークンを使用
- 定期的に認証情報をローテーション
- CI/CDでは短期トークンを使用(AWS ECRトークンは12時間で期限切れ)
- Docker認証ヘルパーで認証情報を安全に保存:
// ~/.docker/config.json
{
"credHelpers": {
"gcr.io": "gcloud",
"123456789.dkr.ecr.us-east-1.amazonaws.com": "ecr-login"
}
}
ログアウト
docker logout
docker logout ghcr.io
ユースケース
プライベートレジストリへのイメージプッシュ用CI/CDパイプラインのセットアップ、開発チーム向けのマルチレジストリ認証設定、異なるクラウドプロバイダー間での安全な認証情報管理。