コンテナレジストリによる認証

caution
GitLab 16.0 以降では、外部認証によって個人アクセストークンやデプロイトークンがコンテナやパッケージのレジストリにアクセスできなくなり、これらのトークンを使ってレジストリにアクセスするすべてのユーザーに影響が及びます。コンテナやパッケージのレジストリで個人アクセストークンやデプロイトークンを使いたい場合は、外部認証を無効にすることができます。

コンテナレジストリで認証を行うには、:

これらの認証方法はすべて、最小限のスコープを必要とします:

  • 読み取り(プル)アクセスの場合、read_registry
  • 書き込み(プッシュ)アクセスについては、write_registry およびread_registry

認証するには、docker login コマンドを実行します。例えば

docker login registry.example.com -u <username> -p <token>

GitLab CI/CD を使って認証します。

CI/CD を使ってコンテナレジストリで認証するには、次のようにします:

  • CI_REGISTRY_USER CI/CD 変数。

    この変数はコンテナレジストリへの読み書きアクセスが可能で、1つのジョブにのみ有効です。パスワードも自動的に作成され、CI_REGISTRY_PASSWORD に割り当てられます。

     docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    
  • CI ジョブ トークン

     docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY
    
  • 最小スコープのデプロイトークン
    • 読み込み(プル)アクセスには、read_registry
    • 書き込み(プッシュ)アクセスについては、write_registry
     docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
    
  • の最小スコープを持つ個人アクセストークン
    • 読み込み(プル)アクセスには、read_registry
    • 書き込み(プッシュ)アクセスについては、write_registry
     docker login -u <username> -p <access_token> $CI_REGISTRY