Docker 以非交互方式设置用户密码

问题描述

我想在 Dockerfile 中设置我的用户 vault 的密码并且我已经尝试过

RUN echo -e "pass\npass" | passwd "${USER}" 

但是得到

Enter new UNIX password: Retype new UNIX password: Sorry,passwords do not match
passwd: Authentication token manipulation error
passwd: password unchanged
The command '/bin/sh -c echo -e "pass\npass" | passwd "${USER}"' returned a non-zero code: 10

我想知道是否有更好的方法来做到这一点?

解决方法

除了使用 passwd,还有另一个实用程序:chpasswd。我已经通过在我的 Dockerfile 中使用以下命令解决了这个问题(在创建用户之后):

RUN echo "${USER}:pass" | chpasswd

很有魅力!