web-dev-qa-db-ja.com

スクリプトからdockerコンテナーにrootパスワードを設定するにはどうすればよいですか?

ホストで実行され、Dockerコンテナーを作成/開始/停止するスクリプトがあります。コンテナ内のrootユーザーのパスワードを変更するスクリプトが欲しいのですが。

コンテナーはsshサーバーなので、次のことを試しました:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

しかし、それは機能しません。先に進み、デバッグに多くの時間を費やす前に、よりスマートな方法があるかどうかを知りたいと思います。

適切な「ドッカー方法」は、Dockerfileによって実行されるスクリプトを作成することであることを理解しています。これは、共有ボリュームからパスワードをプルし、それをルートパスワードとして設定します。これは複雑に聞こえますが、私はそれを行う方法を知っており、私が使用する別のDockerイメージでうまく機能します。しかし、私はこれのためにそれをしたくありません。

ユーザーのパスワードを非対話的に変更するために、Dockerまたはsshを使用するコマンドが必要です。

11
Chris

これはUbuntu 14.04.4 LTSで問題なく動作します。

コンテナーを再構築するスクリプト(「ホスト」で実行されている必要があります)に、次の行を追加します。

$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | Sudo docker exec -i <container-id-or-name> passwd
1
Chris
PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

パスワードを要求するポップアップを開き、それを返します。スクリプトにパスワードが保存されていません

セキュリティをあまり気にせずにパスワードを設定する必要があるDockerコンテナがある場合は、Dockerfileにステートメントを追加できます。

RUN echo "root:root" | chpasswd
8
Ulf Samuelsson

これはDockerとは関係ありません。 passwdからパスワードを提供することを明示的にstdinと言う必要があります。

echo 'newpassword' |passwd root --stdin
5
user1700494