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

2017-05-12 17:26:06 +08:00
 AntonyXin

环境:

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 友有何见解

3346 次点击
所在节点    云计算
1 条回复
AntonyXin
2017-05-12 18:05:36 +08:00
解决了,useradd 和 passwd 创建用户的时候写入文件分别为 /etc/passwd 和 /etc/shadow,和其他程序不同,如果添加用户他会先写 /etc/passwd+,然后覆盖 /etc/passwd,但是 docker 挂载单个文件是挂载点,不允许覆盖,所以最后的解决方法是挂载整个 /etc/目录,:-) 还好不大。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/360924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX