login¶
使い方: docker login [オプション] [サーバ]
Docker レジストリ・サーバに登録またはログインする
サーバの指定が無ければデフォルトで "https://index.docker.io/v1/" を使用
-e, --email="" メールアドレス
--help 使い方の表示
-p, --password="" パスワード
-u, --username="" ユーザ名
自分でホストしているレジストリにログインするには、サーバ名を指定します。
例:
$ docker login localhost:8080
docker login
の実行には sudo
か root
になる必要があります。ただし次の場合は除外します。
docker-machine
を使い、docker engine
を自動設定したようなリモート・デーモンに接続時。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
にヘルパー・プログラムが必要です。
こちらは現時点で利用可能な証明書ヘルパー・プログラムと、ダウンロード先の一覧です。
- D-Bus シークレット・サービス: https://github.com/docker/docker-credential-helpers/releases
- Apple OS X キーチェーン:https://github.com/docker/docker-credential-helpers/releases
- Microsoft Windows 資格情報マネージャ:https://github.com/docker/docker-credential-helpers/releases
使い方¶
証明書ストアを使うには $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
(標準出力に)エラーを表示できます。