docker –volumes – 从没有安装任何文件

我有两个容器,其中一个我使用gluster文件系统来挂载我需要的文件到我的容器的mnt目录中,我在我的Dockerfile中使用VOLUME /mnt共享卷。 我用这个运行这个容器:

 docker run -d --cap-add SYS_ADMIN --device=/dev/fuse:/dev/fuse -e MOUNTPOINT="server1:test" -e TARGET="/mnt" --name gluster gluster-client 

我想在第二个容器中使用这个文件是一个nginx容器,所以我运行这个容器使用–volumes-from来使用共享卷,这是我如何运行我的容器:

 docker run -it --volumes-from gluster nginx sh 

我的gluster容器工作正常,我的意思是我检查了挂载目录(这里/ mnt),我可以看到这些文件,但在第二个容器,我usigdocker – 体积 – 从/ mnt目录中没有文件,似乎它可以挂载的目录,但不是在这些目录内的文件,我该如何解决它?是因为我使用gluster或什么?

gluster容器是基于fedora和nginx容器是基于高山。

我感谢您的帮助:)

这可能是由于SELinux。 尝试运行第二个容器

 docker run -it --volumes-from gluster:z nginx sh 

从docker运行参考文档 :

像SELinux这样的标签系统要求在安装到容器中的卷内容上放置正确的标签。 如果没有标签,安全系统可能会阻止容器内运行的进程使用内容。 默认情况下,Docker不会更改OS设置的标签。

要更改容器上下文中的标签,可以将两个后缀之一:z或:Z添加到卷装入。 这些后缀告诉Docker重新标记共享卷上的文件对象。 z选项告诉Docker两个容器共享卷内容。 因此,Docker使用共享内容标签来标记内容。 共享卷标允许所有容器读取/写入内容。 Z选项告诉Docker用私有的非共享标签来标记内容。 只有当前容器可以使用私人卷。

大约相同的论点,你可以find更多关于在Docker中使用卷的详细信息可能会导致与SELinux和实际的SELinux和容器的问题 。

编辑:如果这不是原因,你的问题应该由于glusterfs和数据容器。 尝试使用命名的卷。

VOLUME一个容器中的VOLUME行更改为

 VOLUME myVolume:/mnt 

而在第二个容器中,可以使用--volume=myVolume而不是--volumes-from

在Docker Data Containers和Named Volumes和Docker命名卷上的数据容器和命名卷上查看更多信息。