我需要设置一个 Docker 容器,其中的文件系统部分是加密的。请不要纠缠于原因,答案是丑陋的,而且政治性多于技术性。
如果重要的话,要加密的特定部分将是从主机安装的卷,尽管我最初只是在容器的 /tmp
中尝试这一点。 。由于我们部署的工作方式,直接在容器外部的卷上执行 ecryptfs 操作会很不方便;我想在内部进行挂载,作为 shell 脚本的一部分,以 CMD
运行.
只要我使用 --privileged
运行容器,我就可以做到这一点(感谢 this throwaway comment )- 但我不想授予随之而来的一切。通过反复试验,我发现添加 --cap-add IPC_LOCK
克服了第一个难以理解的错误( Exiting. Unable to obtain passwd info
),但该过程后来失败了:
mount: block device /tmp/enc is write-protected, mounting read-only
mount: cannot mount block device /tmp/enc read-only
Error mounting eCryptfs: [-1] Operation not permitted
Check your system logs; visit <http://ecryptfs.org/support.html>
添加所有功能在这里没有帮助 - 问题出在其他地方。
docker-run 文档说 --privileged
还消除了与 --device
相关的障碍参数,给出 fuse 作为需要 --device
的示例。设置,并在“之前”示例中显示非常相似的错误。 ecryptfs 和 fusion 似乎有一定的共同点,所以这感觉是一个很好的线索。
我尝试添加--device /tmp/enc
给我的docker run
命令,无济于事(主机不知道这个路径,这是有道理的)。我还注意到有一个 /dev/ecryptfs
(虽然我不知道它的作用)并尝试过。容器已运行,但 ecryptfs 挂载无法工作。
开始令人担忧,好像这无法完成......有什么想法吗?
最佳答案
关于linux - 在没有 --privileged 的情况下在 Docker 中使用 ecryptfs。 --device 的适当值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924422/