login

使い方: docker login [オプション] [サーバ]

Docker レジストリ・サーバに登録またはログインする
サーバの指定が無ければデフォルトで "https://index.docker.io/v1/" を使用

  -e, --email=""       メールアドレス
  --help               使い方の表示
  -p, --password=""    パスワード
  -u, --username=""    ユーザ名

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

例:

$ docker login localhost:8080

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

  1. docker-machine を使い、 docker engine を自動設定したようなリモート・デーモンに接続時。
  2. docker グループに追加されたユーザ。システム上のセキュリティ・リスクになります。 docker グループは root と同等のためです。詳細は Docker デーモンが直面する攻撃 をご覧ください。

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

注釈

sudo docker login を実行したら、証明書は /root/.docker/config.json に保管されます。

証明書ストア

Docker Engine はユーザの証明書(credential)を外部の証明書ストアに保存できます。外部の証明書ストアとは、オペレーティング・システムのネイティブなキーチェーン(keychain)です。Docker 設定ファイルに証明書を保管するよりも、外部のストアを使う方がセキュリティは高いです。

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

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

使い方

証明書ストアを使うには $HOME/.docker/config.json で Docker Engine に対して指定する必要があります。

{
     "credsStore": "osxkeychain"
}

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

プロトコル

証明書ヘルパーは、どのようなプログラムやスクリプトでも扱える非常にシンプルなプロトコルです。このプロトコルは 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 (標準出力に)エラーを表示できます。