我需要设置一个Docker容器,其中对文件系统的一部分进行了加密。请让我们不去解释为什么,答案是丑陋的,而不是技术性的,更具政治性。

万一重要,要加密的特定部分将是从主机进行的卷装载,尽管我最初只是在容器的/tmp中尝试了这一点。由于我们的部署方式有效,因此直接在容器外部的卷上执行ecryptfs的操作很不方便;我想作为CMD运行的shell脚本的一部分进行内部安装。

我可以用--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>

添加所有功能在这里无济于事-问题出在其他地方。

jetty 运行的文档说,--privileged还消除了与--device参数有关的障碍,给出了 fuse 作为需要--device设置的示例,并在“之前”示例中显示了类似的外观错误。 ecryptf和fuse似乎有一定的共同点,因此这是一个很好的线索。

我尝试将--device /tmp/enc添加到我的docker run命令中,但无济于事(主机不知道该路径,这很有意义)。我还注意到有一个/dev/ecryptfs(尽管我不知道它的作用),然后尝试了一下。容器已运行,但无法进行ecryptfs挂载。

似乎开始令人担忧,好像这无法完成...有什么想法吗?

最佳答案

看来docker使用的实际存储驱动程序在eCryptFS上不起作用。

检查these问题in the存储库。

关于linux - 在没有--privileged的情况下在Docker内部使用ecryptfs。 --device的适当值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33924422/

10-11 04:50