我有一个脚本,在主机上运行,并创build/启动/停止docker集装箱。 我希望脚本更改容器中的root用户的密码。
由于容器是一个SSH服务器,我试过: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root' sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
但它不起作用。 在继续之前,花更多的时间来debugging它,我想知道是否有更聪明的方法来做到这一点。
我明白,正确的“docker方式”是制作一个由Dockerfile运行的脚本,该脚本从共享卷中提取密码并将其设置为root密码。 这听起来很复杂,但我知道如何去做,并且适用于我使用的另一个docker图像。 但是我不想这样做。
我只需要一个使用Docker或者ssh来非交互式地改变用户密码的命令。
这与Docker无关。 你需要明确地说passwd ,你要从stdin提供密码。
echo 'newpassword' |passwd root --stdin
这在Ubuntu 14.04.4 LTS上完美的工作:
在重build容器(应该在“主机”上运行)的脚本中,添加这些行:
$PASS='<a-good-password>' echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd