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命名卷上的数据容器和命名卷上查看更多信息。