linux – 不能将基于保险丝的卷暴露给Docker容器

我试图向Docker容器提供一卷加密的文件系统供内部使用.
想法是容器将像往常一样写入卷,但事实上,主机将在将数据写入文件系统之前对其进行加密.

我正在尝试使用EncFS – 它在主机上运行良好,例如:

encfs /encrypted /visible

我可以将文件写入/可见,那些被加密.
但是,当尝试运行具有/可见的容器的容器时,例如:

docker run -i -t –privileged -v /visible:/myvolume imagename bash

我在容器中得到一个卷,但它是在原始/加密的文件夹,而不是通过EncFS.如果我从/ visible卸载了EncFS,我可以看到容器写入的文件.不用说/加密是空的.

有没有办法让Docker通过EncFS安装卷,而不是直接写入文件夹?
相比之下,当我使用NFS挂载作为卷时,docker工作正常.它写入网络设备,而不是我装载设备的本地文件夹.

谢谢

最佳答案
我无法在本地复制您的问题.如果我尝试将encfs文件系统作为Docker卷公开,那么尝试启动容器时出错:

FATA[0003] Error response from daemon: Cannot start container 

所以有可能你有不同的事情.无论如何,这是什么解决了我的问题:

认情况下,FUSE仅允许安装文件系统的用户访问该文件系统.当您运行Docker容器时,该容器最初以root身份运行.

安装FUSE文件系统时,可以使用allow_root或allow_other mount选项.例如:

$encfs -o allow_root /encrypted /other

这里,allow_root将允许root用户访问挂载点,而allow_other将允许任何人访问安装点(只要目录中的Unix权限允许他们访问).

如果我使用allow_root通过encfs filesytem安装,那么我可以将该文件系统作为Docker卷进行公开,并且该文件系统的内容从容器内部正确显示.

相关文章

本篇文章和大家了解一下docker容器无法执行vim如何解决。有一...
这篇文章主要介绍了windowsDockerDeskTop最新款4.18.0怎么安...
这篇文章主要介绍“docker的常用命令怎么使用”,在日常操作...
这篇文章主要介绍“docker中怎么配置hosts”的相关知识,小编...
这篇“docker怎么部署zookeeper集群”文章的知识点大部分人都...
这篇文章主要介绍了怎么使用Maven打包构建Docker镜像并推送到...