Bagaimana Saya bisa mengatur kata sandi root dalam wadah docker dari skrip?

Saya memiliki skrip yang berjalan di host dan membuat/memulai/menghentikan wadah buruh pelabuhan. Saya ingin skrip mengubah kata sandi pengguna root di dalam wadah.

Karena wadah adalah server ssh, saya mencoba:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

tapi itu tidak berhasil. Sebelum melanjutkan dan menghabiskan lebih banyak waktu untuk men-debugnya, saya ingin tahu apakah ada cara yang lebih cerdas untuk melakukannya.

Saya mengerti bahwa "cara buruh pelabuhan" yang tepat adalah membuat skrip yang dijalankan oleh Dockerfile, yang menarik kata sandi dari volume bersama dan menetapkannya sebagai kata sandi root. Ini terdengar rumit, tetapi saya tahu cara melakukannya dan berfungsi dengan baik untuk gambar docker lain yang saya gunakan. Tapi aku tidak ingin melakukannya untuk yang satu ini.

Saya hanya perlu perintah yang menggunakan Docker atau ssh untuk mengubah kata sandi pengguna secara tidak interaktif.

PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

akan membuka popup, meminta password, dan kembali it.No kata sandi disimpan dalam skrip

Jika Anda memiliki wadah docker di mana Anda perlu mengatur kata sandi, tanpa terlalu memperhatikan keamanan, Anda dapat menambahkan statementin Dockerfile:

RUN echo "root:root" | chpasswd

Ini tidak terkait dengan Docker. Anda harus secara eksplisit mengatakan passwd bahwa Anda akan memberikan password dari stdin.

user='root'pass='newpassword'chpasswd <<<"$user:$pass"

Ini bekerja dengan sempurna di Ubuntu 14.04.4 LTS:

Dalam skrip yang membangun kembali wadah (yang seharusnya berjalan di "host"), tambahkan baris ini:

$PASS='<a-good-password>'echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd