Ore*_*ren 17 linux fuse docker
我正在尝试为我的docker容器提供一定量的加密文件系统供内部使用.这个想法是容器将像往常一样写入卷,但实际上主机将在将数据写入文件系统之前加密数据.
我正在尝试使用EncFS - 它在主机上运行良好,例如:
encfs/encrypted/visible
我可以将文件写入/ visible,然后加密.但是,当尝试使用/ visible作为卷运行容器时,例如:
docker run -i -t --privileged -v/visible:/ myvolume imagename bash
我确实在容器中获得了一个卷,但是它位于原始/加密文件夹中,而不是通过EncFS.如果我从/ visible卸载EncFS,我可以看到容器写的文件.不用说/加密是空的.
有没有办法让docker通过EncFS挂载卷,而不是直接写入文件夹?相比之下,当我使用NFS挂载作为卷时,docker工作正常.它写入网络设备,而不是写入我安装设备的本地文件夹.
谢谢
lar*_*sks 15
我无法在本地复制您的问题.如果我尝试将encfs文件系统公开为Docker卷,则在尝试启动容器时出错:
FATA[0003] Error response from daemon: Cannot start container <cid>:
setup mount namespace stat /visible: permission denied
Run Code Online (Sandbox Code Playgroud)
所以你可能会有不同的事情发生.无论如何,这就解决了我的问题:
默认情况下,FUSE仅允许挂载文件系统的用户访问该文件系统.当您运行Docker容器时,该容器最初运行为root.
您可以在装入FUSE文件系统时使用allow_root或allow_other装入选项.例如:
$ encfs -o allow_root /encrypted /other
Run Code Online (Sandbox Code Playgroud)
这里,allow_root将允许root用户访问mountpoint,同时allow_other允许任何人访问mountpoint(前提是该目录的Unix权限允许他们访问).
如果我使用encfs filesytem挂载allow_root,我可以将该文件系统公开为Docker卷,并且可以从容器内部正确显示该文件系统的内容.
| 归档时间: |
|
| 查看次数: |
6502 次 |
| 最近记录: |