Docker访问将来安装的卷

时间:2018-09-30 18:33:52

标签: docker

我目前想知道如何在没有--privileged的情况下访问加密的USB密钥。假设我有/dev/sda1个Luks加密密钥和container一个正在运行的Docker容器。该密钥通过cryptsetup luksOpen /dev/sda1 encrypted_sda1 --key-file=key-file打开。现在,我可以访问/dev/mapper/encrypted_sda1。现在,我执行mount /dev/mapper/encrypted_sda1 /media/sda1,其中/media在主机和容器之间共享。

现在,我可以从我的主机设备通过/media/sda1访问密钥的内容。但是从我的容器中(没有privileged),我不能。我在sda1

中只有一个名为/media的空目录

奇怪的是,如果在将USB密钥安装到/media后运行容器,我可以从容器访问/media/sda1。因此,我认为这是因为该卷未正确同步,并且某些权限存在问题。

我不太了解为什么在容器运行时从主机挂载USB密钥时为什么无法访问/media/sda1。有铅吗?

祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

我认为您需要在--privileged挂载上配置bind propagation,而不是/media。默认值为rprivate,这意味着原始或副本安装点中的任何位置都不会在任何方向上传播安装点。如果您使用rslave,则原始副本的子副本(例如/media/sda1)在副本中可见。

docker container run --mount type=bind,source=/media,target=/media,bind-propagation=rslave …