Docker非交互式设置用户密码

5

我想在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

我在想是否有更好的方法来完成这个任务?


2
通常情况下,您根本不需要用户密码;您无法以任何有意义的方式“登录”到容器中,并且通常在容器中没有什么需要密码的操作。 (如果您需要用于调试目的的root shell,可以使用docker run -u rootdocker exec -u root命令。)是什么促使您尝试设置这个密码? - undefined
@DavidMaze 我希望能够在容器内的用户账户中使用sudo命令,并且当我想要执行sudo时,它会要求输入用户密码(我已经通过RUN adduser "${USER}" sudo将用户添加到sudo组中)。 - undefined
@DavidMaze 我想要通过ssh登录到容器中,这需要一个密码(不想使用无密码ssh)。 - undefined
@DavidMaze 你真是个天才!docker exec -u root 就是我们需要的全部! - undefined
1个回答

7

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

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

运行得非常好!


6
修改密码: chpasswd:(用户$ {UNAME})pam_chauthtok()失败,错误:身份验证令牌操作错误 chpasswd:(第1行,用户$ {UNAME})密码未更改 - undefined
1
也遇到了上述错误。 - undefined
@WalksB 这是因为这个评论吗? - undefined
1
@Gulzar 在我的情况下,"${USER}:pass" 扩展没有起作用,我使用了 "root:pass",也就是硬编码的用户名,这样就可以工作了。 - undefined
1
еҸӘйңҖзҹҘйҒ“docker historyе‘Ҫд»ӨеҸҜжҹҘзңӢй•ңеғҸзҡ„жҳҺж–ҮеҜҶз ҒпјҢз”ҡиҮіж— йңҖи®ҝй—®DockerfileгҖӮ - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接