docker login

説明

Docker レジストリに ログイン(log in) します。

使い方

$ docker login [OPTIONS] [SERVER]

補足説明

レジストリにログインします。

コマンドの使用例は、以下の 使用例のセクション をご覧ください。

オプション

名前, 省略形

デフォルト

説明

--password , -p

パスワード

--password-stdin

標準入力からパスワードを取得

--username , -u

ユーザ名

使用例

自己ホストしているレジストリにログイン

自分でホストしているレジストリにログインするには、サーバ名を指定します。

$ docker login localhost:8080

標準入力を使ってパスワードを与える

docker login コマンドの実行とは、双方向ではありません。ですが、 --password-stdin フラグをを使えば、 STDIN を通してパスワードを与えられます。 STDIN の使用により、シェルの履歴やログファイル上にパスワードが記録されるのを防ぎます。

以下の例は、パスワードをファイルから読み込み、それを STDIN を使う docker login コマンドに渡します。

$ cat ~/my_password.txt | docker login --username foo --password-stdin

特権ユーザ(privileged user) の必要条件

docker login の実行には sudoroot になる必要があります。ただし次の場合は除外します。

  1. docker-machine を使い、 docker engine が自動設定されたようなリモート・デーモンへの接続時。

  2. docker グループに追加されたユーザ。システム上のセキュリティ・リスクになります。 docker グループは root と同等のためです。詳細は Docker デーモンが直面する攻撃 をご覧ください。

認証情報(credentia) があれば、あらゆるパブリックないしプライベートなリポジトリにログインできます。ログインしたら、コマンドは 認証情報(credential) を Linux であれば $HOME/.docker/config.json に、Windows であれば %USERPROFILE%/.docker/config.json に保管します。手順は以降で説明します。

認証情報の保存場所

Docker Engine はユーザの認証情報を外部の認証情報ストアに保存できます。外部の認証情報ストアとは、オペレーティング・システムに搭載するキーチェーン(keychain)です。Docker 設定ファイルに認証情報を保管するより、外部のストアを使う方が、より安全です。

認証情報ストアを使うには、キーチェーンや外部ストアと接続するための、外部のヘルパー・プログラムが必要です。Docker はクライアント・ホスト上の $PATH にヘルパー・プログラムを必要とします。

こちらは現時点で利用可能な認証情報ヘルパー・プログラムと、ダウンロード先の一覧です。

認証情報ストアの設定方法

認証情報ストアは $HOME/.docker/config.json で指定し、 Docker Engine にこれを使うよう指定する必要があります。設定項目の値には、プログラムが使用する接頭句を使う必要があります(例: すべて docker-credential- に続きます)。たとえば、 docker-credential-osxkeychain には、次のようにします。

{
     "credsStore": "osxkeychain"
}

既にログイン状態であれば、 docker logout を実行し、ファイルから認証情報を削除します。それから docker login を再び実行します。

デフォルトの挙動

デフォルトでは、Docker は各プラットフォームのネイティブなバイナリを探します。たとえば、 macOS であれば「osxkeychain」、Windows であれば「wincerd」、Linux であれば「pass」です。Linux では特別な状況で、Docker は「pass」バイナリが見つからない場合、「secretservice」を頼りにします。もしも、これらのバイナリが存在しなければ、先ほど記述した設定ファイル中に、 base64 エンコーディングした認証情報(例:パスワード)を保管します。

認証情報ヘルパーのプロトコル

: ruby:認証情報ヘルパー <credential helper> は、どのようなプログラムやスクリプトでも扱える非常にシンプルなプロトコルです。このプロトコルは Git のアイディアに強く影響を受けていますが、情報を共有する仕組みは違います。

ヘルパーはコマンドのアクションを決めるため、常に1番めの引数を使います。ここで利用可能な引数とは store get erase のいずれかです。

store 命令は標準入力の JSON ペイロードを取得します。ペイロードではサーバのアドレス、認証情報の指定、ユーザ名、パスワードあるいは識別用トークンを渡します。

{
     "ServerURL": "https://index.docker.io/v1",
     "Username": "david",
     "Secret": "passw0rd1"
 }

もしシークレット(訳者注:認証情報やトークンなどの秘密情報の意味)が識別用トークンを保管する場合、ユーザ名にあたる部分は <token> がセットされます。

store 命令は何らかの問題が Docker Engine で発生したとき、 STDOUT (標準出力に)エラーを表示できます。

get 命令は STDIN (標準入力)からの文字列をペイロードとして読み込みます。Docker Engine が必要とする認証情報を持っているサーバのアドレスをペイロードで渡します。 https://index.docker.io/v1 はペイロードの例です。

get 命令は JSON ペイロードを STDOUT (標準出力)に書き出します。Docker は、このペイロードからユーザ名とパスワードを読み込みます。

{
     "Username": "david",
     "Secret": "passw0rd1"
}

erase 命令は STDIN (標準入力)からの文字列をペイロードとして読み込みます。Docker Engine が必要とする認証情報を持っているサーバのアドレスをペイロードで渡します。 https://index.docker.io/v1 はペイロードの例です。

store 命令は何らかの問題が Docker Engine で発生したとき、 STDOUT (標準出力に)エラーを表示できます。

認証情報ヘルパー

認証情報ヘルパー(credential helpers) は、先述の認証情報ストアと似ていますが、プログラムは「特定のレジストリ」に対応する認証情報を扱うように設計されています。特定のレジストリで認証情報を処理する場合、デフォルトの認証情報ストア( credsStore あるいは設定ファイル自身)を使いません。

認証情報ヘルパーの設定

既にログイン中の場合は、 docker logout を実行し、デフォルトのストアから認証情報を削除します。

認証情報ヘルパーは credsStore と似たような方法で指定しますが、同時に複数のヘルパーを設定できます。キーではレジストリのドメインを指定し、バリューではプログラムが使用する接頭句(例:すべて docker-credential- に続きます)を指定します。以下は例です。

{
  "credHelpers": {
    "registry.example.com": "registryhelper",
    "awesomereg.example.org": "hip-star",
    "unicorn.example.io": "vcbait"
  }
}

親コマンド

コマンド

説明

docker

Docker CLI の基本コマンド