0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerレジストリへのログイン

Last updated at Posted at 2024-09-09

Artifact Registry for Docker への認証を構成するが初見でよく理解できなかったため、前提となるDockerレジストリの認証周りの情報を整理した上で、噛み砕いたものをアウトプット。

Dockerレジストリ

Dockerレジストリ.jpg

Dockerイメージを保存・配布するシステム。
具体的なサービス名としては、DockerHub, GCP の Artifact Registryなど。
Dockerレジストリは複数のリポジトリから構成され、リポジトリは複数のイメージを管理する。
同名のイメージのバージョンはタグで管理される。

docker loginコマンド

doceker pushdocker pullコマンドを実行するために、操作対象のdockerレジストリにログインするコマンド。

docker login <オプション> <dockerレジストリのURL>

オプション
-u: ユーザ名を指定
-p: パスワードを直接指定
--password-stdin: Linuxコマンドのパイプでパスワードを指定するときに使う。シェルのhistoryにパスワードが丸見えで残ったりしないので安全。

認証情報ヘルパー(credential helper)

dockerレジストリの認証情報(ユーザー名, パスワード)を外部ストア(Macのキーチェーンとか)を利用して管理(保存・取得)するためのプログラム群。
プログラム名は docker-credential-xxx という名前で統一されている

例.

  • docker-credential-osxkeychain: Macのキーチェーンで管理されている認証情報
  • docker-credential-gcloud: gcloudコマンドで管理されている認証情報

docker login実行時に認証情報をオプションで指定しない場合、~/.docker/config.jsonに記載されている「どのレジストリへログインするときにどの認証情報ヘルパーを使うのか」の設定に基づいて、認証情報ヘルパー経由で外部ストアから認証情報を取得してレジストリへのログインを試みてくれる模様。

コマンド

docker-credential-xxx store

外部ストアに認証情報を保存する。
docker-credential-gcloud の場合は、gcloudコマンドにおける現在アクティブなユーザーアカウント or アクティブなサービスアカウントの認証情報が使われるため、自らstoreコマンドを実行することはないはず。

gloudコマンドでの認証については、gcloudコマンドまとめgcloud auth logingcloud auth activate-service-account を参照

docker-credential-xxx get

外部ストアから認証情報を取得する。

設定に基づき、指定したレジストリへのログインに使われる具体的な認証情報(ユーザ名、パスワード)を知るには、以下のコマンドを実行する

echo https://<config.jsonに登録したレジストリ> | docker-credential-<config.jsonに登録した認証情報ヘルパーのサフィックス> get

例.

echo https://us-central1-docker.pkg.dev | docker-credential-gcloud get
=>
{
  "Secret": ".............................",
  "Username": "_dcgcloud_token"
}

~/.docker/config.json

dockerの認証情報の設定ファイル。

# 例.
# - デフォルトで認証情報ヘルパーdocker-credential-desktop を使う
# - Dockerレジストリが us-east1-docker.pkg.dev である場合、認証情報ヘルパーdocker-credential-gcloudを使う
{
    "credsStore": "desktop",
    "credHelpers": {
      "us-east1-docker.pkg.dev": "gcloud"
     }
} 
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?