当/etc/passwd 和/etc/shadow 是通过 volume 挂载的 docker 容器,不能使用 useradd 命令

vps网友提供 05-12 讨论归档 1

环境:

Docker version 17.03.1-ce, build c6d412e CentOS Linux release 7.3.1611 (Core) Docker image : centos-7.3 综上描述,出现两种现象:

1. 通过 volume 方式将本地的 passwd 挂载到容器中的 /etc/passwd(还有 shadow),在使用 useradd 的时候出现如下报错:

useradd ddd
useradd: cannot open /etc/passwd

2.软连接方式

根据上述错误,在 issuse 及 stackoverflow 查阅,发现有一个解决方法,就是通过软连接,解决方法如下解决方法,docker 的 issue 如下issue

按照上述操作后,发现 useradd 依然不能使用,stackoverflow 上面最后仅仅验证了 passwd 命令。

3.总结

目前依然没有好的解决方法,不知道各位 v 友有何见解

本文由 vps网友提供,转载请注明出处

本文链接: https://www.vpsvsvps.com/discuss/a/1676471826584178688.html

标签:
AntonyXin
05-12

解决了,useradd 和 passwd 创建用户的时候写入文件分别为 /etc/passwd 和 /etc/shadow,和其他程序不同,如果添加用户他会先写 /etc/passwd+,然后覆盖 /etc/passwd,但是 docker 挂载单个文件是挂载点,不允许覆盖,所以最后的解决方法是挂载整个 /etc/目录,:-) 还好不大。