如何通过脚本设置 Docker 容器中的 root 密码?

如何通过脚本设置 Docker 容器中的 root 密码?

我有一个在主机上运行的脚本,用于创建/启动/停止 docker 容器。我希望该脚本能够更改容器内 root 用户的密码。

由于容器是一个 ssh 服务器,因此我尝试: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

但它不起作用。在继续花更多时间调试之前,我想知道是否有更聪明的方法来实现它。

我理解正确的“docker 方式”是制作一个由 Dockerfile 运行的脚本,该脚本从共享卷中提取密码并将其设置为 root 密码。这听起来很复杂,但我知道如何做,并且对我使用的另一个 docker 映像很有效。但我不想为这个做这件事。

我只需要一个使用 Docker 或 ssh 以非交互方式更改用户密码的命令。

答案1

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

将打开一个弹出窗口,要求输入密码并返回。脚本中没有存储密码

如果您有一个需要设置密码的 docker 容器,而又不太关心安全性,您可以在 Dockerfile 中添加一条语句:

RUN echo "root:root" | chpasswd

答案2

这与 Docker 无关。您需要明确说明passwd您将从 提供密码stdin

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

答案3

这在 Ubuntu 14.04.4 LTS 上运行完美:

在重建容器的脚本中(应该在“主机”上运行),添加以下行:

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

相关内容