web-dev-qa-db-ja.com

bashスクリプト内の自動ドッカーログイン

クレデンシャルをdocker loginスクリプト内のコマンド?

基本的にカスタムVMなどのセットアッププロセス全体を自動化するbashスクリプトを使用していますが、スクリプト内でdockerにログインして画像を取得する必要がある場合、次のエラーが表示されます。

ユーザー名:FATA [0000]デバイスの不適切なioctl


使用していたコマンドは次のとおりです。

( echo "xxx"; echo "yyy"; echo "zzz" ) | docker login docker.somesite.org


これは、既存の.dockercfgファイルとその方法、
どうもありがとう。

23
user4916078

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より古い

上記と同じパス。ただし、also--emailフラグも渡す必要があります。この内容は実際にはチェックされないため、何でも問題ありません。

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_Host --email [email protected]
39

Docker loginコマンドを非対話的に実行するには、-password-stdinフラグを設定して、STDINを介してパスワードを提供します。 STDINを使用すると、パスワードがシェルの履歴またはログファイルに記録されなくなります。

$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_Host
7
noelmcloughlin

プライベートレジストリにログインすると、dockerはファイル$ HOME/.docker/config.jsonを自動作成します。このファイルには資格情報が含まれていたため、レジストリにログインするときにファイルを保存してホストにコピーできます。

このようなファイルの内容:

{
     "auths": {
                   "example.com": {
                                    "auth": "xxxxxxxxxxxxxxxxxxxxxxx"
                    }
            }
 }

アドオン1つのサーバーでマルチドッカーレジストリにログインする場合は、次のように別の認証情報を追加します。

{
     "auths": {
                   "example.com": {
                                    "auth": "xxxxxxxxxxxxxxxxxxxxxxx"
                    },
                    "example1.com":{
                                    "auth": "xxxxxxxxxxxxxxxxxxxxxxx"
                    }
            }
 }

これで、example.comおよびexample1.comからイメージをプッシュおよびプルできます。

3
domino_jiang

これに偶然出くわす可能性のあるランダムな通行人については、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 +トークンを使用してレジストリにログインします

0
slm