docker login コマンドを非対話的に実行するには、 --password-stdin フラグを設定して、STDIN を介してパスワードを提供します。 STDIN を使用すると、パスワードがシェルの履歴またはログ ファイルに残されるのを防ぎます。
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
プライベート レジストリにログインすると、docker は $HOME/.docker/config.json ファイルを自動作成します。このファイルには資格情報が含まれているため、レジストリにログインするときに、ファイルを保存して任意のホストにコピーできます。
ファイルの内容は次のようになります:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
アドオン 1 つのサーバーで複数の Docker レジストリにログインする場合は、次のように別の認証情報を追加するだけです:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
これで、example.com と example1.com からイメージをプッシュおよびプルできます。
Docker 18 以降
これを行うための公式文書化された方法があります:
cat ~/my_password.txt | docker login --username foo --password-stdin
Docker 1.11 から Docker 17 まで
コマンドラインですべての引数を渡すことができます:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
DOCKER_HOST
を指定しない場合 、メインの Docker リポジトリを取得します。引数のいずれかを省略すると、その引数を求めるプロンプトが表示されます。
1.11 より古い
もする必要があることを除いて、上記と同じパス --email
を渡す 国旗。内容は実際にはチェックしていないので、何でもいいです:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]
Openshift 環境のコンテナー レジストリ (Docker) に対してこれを使用する方法を探しているランダムな通行人については、次を使用して、Openshift トークンを使用してログインするための資格情報と共にレジストリ URI を提供できます。
$ echo "$(oc whoami -t)" | docker login -u $USER --password-stdin \
$(oc get route docker-registry -n default --no-headers | awk '{print $2}')
Login Succeeded
上記は 3 つのことを行います:
- Openshift
oc whoami -t
から取得したトークンを渡します -
Openshift のレジストリ URI を決定します
$(oc get route docker-registry -n default --no-headers | awk '{print $2}'`)
-
$USER
を使用してレジストリにログインします + 上からのトークン