在没有--privileged的情况下在Docker中使用ecryptfs。适当的值--device?

时间:2015-11-25 18:58:26

标签: linux docker ecryptfs

我需要设置一个Docker容器,其中部分文件系统是加密的。请不要纠缠于为什么,答案是丑陋的,更具政治性而非技术性。

如果重要,要加密的特定部分将是来自主机的卷装载,尽管我最初只是在容器的/tmp中尝试这样做。由于我们的部署工作方式,直接在容器外部的卷上做ecryptfs东西是不方便的;我希望在作为CMD运行的shell脚本的一部分内部执行mount。

如果我使用--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 docs说--privileged也取消了与--device参数相关的障碍,给出了 fuse 作为需要{{1}的示例设置,并在“之前”示例中显示相似的看起来错误。 ecryptfs和fuse似乎有一定的共同点,所以这感觉就像一个很好的线索。

我尝试将--device添加到我的--device /tmp/enc命令中,但无济于事(主机不了解此路径,这是有意义的)。我也注意到有一个docker run(虽然我不知道它做了什么)并试过了。容器运行,但ecryptfs mount不起作用。

开始似乎令人担忧,好像这样做不可能......有什么想法吗?

1 个答案:

答案 0 :(得分:2)

似乎docker使用的实际存储驱动程序无法在eCryptFS上运行。

检查these个问题in the存储库。