Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux docker容器上的Persistent/etc/passwd_Linux_Docker_Mount_Passwd_Volumes - Fatal编程技术网

Linux docker容器上的Persistent/etc/passwd

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命名的卷(如你所见)用于使容器主机独立,这是通过创建

我已经创建了一个docker映像,允许用户使用SSH在上面连接

出于安全原因,我希望用户可以更改他们的密码。我只使用docker命名的卷,所以我不能绑定/etc/passwd,也不想挂载所有/etc

有什么想法吗?提前感谢。

在这篇文章中,有人问是否可以使用docker compose将文件装载为卷(答案是肯定的),因此如果可以使用compose,我认为docker也可以这样做。 我知道这与你的问题不同,因为它们使用主机目录/文件,但docker命名的卷(如你所见)用于使容器主机独立,这是通过创建docker处理的一些卷来完成的。

因此,尝试装入一个卷,并将该卷装载到passwd文件的位置

我终于找到了这个解决方案:

  • 创建命名卷
  • 挂载它(例如在/users中)
  • 在上面设置一个阴影文件
  • 在容器的开头,在/etc/shadow上为/users/shadow创建一个链接

谢谢。但我相信以“/”开头的卷语法是用于与docker主机绑定装载,而不用于docker命名的卷。执行以下操作:
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文件并在之后恢复它,但我不喜欢这种方式。没有更干净的吗?试试这个:谢谢,我认为这是正确的方法。但这对我来说太不成比例了。我找到了解决方案,请看我自己的问题回答。