linux - 在Docker容器中挂载SMB / CIFS共享

我有一个运行在Docker容器中的Web应用程序。此应用程序需要访问公司文件服务器(带有Active Directory域控制器的Windows服务器)上的一些文件。我尝试访问的文件是为客户机创建的图像文件,Web应用程序将其作为客户机产品组合的一部分显示。
在我的开发机器上,通过/etc/fstab中的条目装载了适当的文件夹,主机装载点通过--volume参数装载在Docker容器中。这很管用。
现在,我正在尝试组装一个生产容器,它将在不同的服务器上运行,而不依赖于主机上装载的CIFS共享。因此,我尝试将适当的条目添加到容器中的/etc/fstab文件中,并使用mount -a安装它们。我得到了。
网上的一点研究让我想到了。如果我读得正确,Docker似乎明确地拒绝在容器中装载文件系统的能力。我尝试以只读方式安装共享,但这(不出所料)也失败了。
所以,我有两个问题:
我是否理解Docker禁止在容器内使用mount error(13): Permission denied
如果不在主机上安装CIFS共享,然后在Docker容器中安装主机文件夹,有人能想到另一种方法来实现这一点吗?


最佳答案:

是的,Docker阻止您在容器中安装远程卷作为安全措施。如果您信任您的图像和运行它们的人,那么您可以使用带有--privilegeddocker run标志来禁用这些安全措施。
此外,您可以将--cap-add--cap-drop结合起来,只为容器提供它实际需要的功能。(See documentation)TheSYS_ADMINcapability is the one that grant privileges.