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 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...