Linux docker容器上的Persistent/etc/passwd
我已经创建了一个docker映像,允许用户使用SSH在上面连接 出于安全原因,我希望用户可以更改他们的密码。我只使用docker命名的卷,所以我不能绑定/etc/passwd,也不想挂载所有/etc 有什么想法吗?提前感谢。在这篇文章中,有人问是否可以使用docker compose将文件装载为卷(答案是肯定的),因此如果可以使用compose,我认为docker也可以这样做。 我知道这与你的问题不同,因为它们使用主机目录/文件,但docker命名的卷(如你所见)用于使容器主机独立,这是通过创建docker处理的一些卷来完成的。Linux docker容器上的Persistent/etc/passwd,linux,docker,mount,passwd,volumes,Linux,Docker,Mount,Passwd,Volumes,我已经创建了一个docker映像,允许用户使用SSH在上面连接 出于安全原因,我希望用户可以更改他们的密码。我只使用docker命名的卷,所以我不能绑定/etc/passwd,也不想挂载所有/etc 有什么想法吗?提前感谢。在这篇文章中,有人问是否可以使用docker compose将文件装载为卷(答案是肯定的),因此如果可以使用compose,我认为docker也可以这样做。 我知道这与你的问题不同,因为它们使用主机目录/文件,但docker命名的卷(如你所见)用于使容器主机独立,这是通过创建
因此,尝试装入一个卷,并将该卷装载到passwd文件的位置 我终于找到了这个解决方案:
- 创建命名卷
- 挂载它(例如在/users中)
- 在上面设置一个阴影文件
- 在容器的开头,在/etc/shadow上为/users/shadow创建一个链接
docker volume create passwd&&docker container run-ti--mount source=passwd,target=/etc/passwd
失败:docker:Error response from daemon:readdirent:不是目录。为什么不创建默认密码,他们可以在容器中连接并更改密码?(或者您可以说在dockerfile中添加myfolder/passwd/etc/passwd,但是您应该小心处理这个文件,或者只是创建一个脚本,在开始时运行,从另一个路径读取密码并在passwd中更改它)是的,用户在使用ssh登录后将更改密码。但是,如果我重建映像或重新启动(而不是恢复)容器,所有密码都将丢失。所以我可以保存/etc/passwd文件并在之后恢复它,但我不喜欢这种方式。没有更干净的吗?试试这个:谢谢,我认为这是正确的方法。但这对我来说太不成比例了。我找到了解决方案,请看我自己的问题回答。