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

セキュリティベストプラクティス

  1. スクリプトで-pフラグをパスワードに使用しないこと。常に--password-stdinを使用
  2. アカウントパスワードの代わりにアクセストークンを使用
  3. 定期的に認証情報をローテーション
  4. CI/CDでは短期トークンを使用(AWS ECRトークンは12時間で期限切れ)
  5. 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パイプラインのセットアップ、開発チーム向けのマルチレジストリ認証設定、異なるクラウドプロバイダー間での安全な認証情報管理。

試してみる — Docker CLI Reference

フルツールを開く