在没有 – 特权的情况下在Docker中使用ecryptfs。 – 设备的适当价值?

我需要设置一个Docker容器,其中的一部分文件系统被encryption。 请不要谈论为什么,答案是丑陋的,比技术更具政治性。

万一它很重要,要encryption的特定部分将是从主机的卷挂载,虽然我最初只是在容器的/tmp尝试了这一点。 由于我们的部署工作方式,在容器外部直接在卷上执行ecryptfs的东西是不方便的, 我想做一个作为CMD运行的shell脚本的一部分。

我可以做到这一点确定只要我运行容器与 – --privileged (感谢这一 --privileged 评论 ) – 但我不想授予一切随之而来的 。 通过试验和错误,我发现添加--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> 

添加所有function在这里没有帮助 – 问题在于别处。

--privileged运行的文档说 – --privileged也会消除与--device参数相关的障碍,给出导火索作为一个需要设置的东西的例子,并且在“之前”的例子中显示相当类似的外观错误。 ecryptfs和fuse似乎有一定的共同点,所以这感觉是一个很好的线索。

我尝试添加--device /tmp/enc到我的docker run命令,无济于事(主机不知道这个path,这是有道理的)。 我也注意到有一个/dev/ecryptfs (虽然我不知道它是什么),并尝试过。 容器运行,但ecryptfs安装将无法正常工作。

这似乎开始似乎令人担忧,如果这不能做…任何想法?

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

检查存储库中的这个问题。