GNU/Linux >> Linux の 問題 >  >> Linux

bash スクリプト内での自動 docker ログイン

<ブロック引用>

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 を使用してレジストリにログインします + 上からのトークン


Linux
  1. Bashスクリプトをファイルに接続できますか?

  2. タイプセット-aスクリプトにエラーがありますか?

  3. テンプレートを記入するためのBashスクリプト?

  1. 代替 --config Java bash スクリプト

  2. bashスクリプトにスペースを含むベース名?

  3. bash スクリプトをデーモンとして実行する

  1. Bashスクリプトをデバッグする方法は?

  2. Bash スクリプトのパターン マッチング

  3. jenkins パイプラインで bash コマンドを実行する