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

标签 linux windows docker mount cifs

我有一个在 Docker 容器中运行的 Web 应用程序。此应用程序需要访问我们公司文件服务器(带有 Active Directory 域 Controller 的 Windows 服务器)上的一些文件。我尝试访问的文件是为我们的客户创建的图像文件,Web 应用程序将它们显示为客户投资组合的一部分。

在我的开发机器上,我通过 /etc/fstab 中的条目安装了适当的文件夹,主机安装点通过 --volume 安装在 Docker 容器中争论。这完美无缺。

现在我正在尝试组合一个生产容器,该容器将在不同的服务器上运行,并且不依赖于主机上挂载的 CIFS 共享。所以我尝试将适当的条目添加到容器中的 /etc/fstab 文件中,并使用 mount -a 安装它们。我得到 mount error(13): Permission denied.

我在网上做了一些研究,找到了 this article about Docker security .如果我没看错的话,看来 Docker 明确否认了在容器中挂载文件系统的能力。我尝试以只读方式安装共享,但这(不出所料)也失败了。

所以,我有两个问题:

  1. 我是否正确理解 Docker 会阻止在容器内使用任何 mount

  2. 谁能想到另一种方法来完成此操作无需在主机上挂载 CIFS 共享,然后将主机文件夹挂载到 Docker 容器中?

最佳答案

是的,作为安全措施,Docker 阻止您在容器内安装远程卷。如果你信任你的镜像和运行它们的人,那么你可以使用 --privileged 标志和 docker run 来禁用这些安全措施。

此外,您可以结合 --cap-add--cap-drop 以仅赋予容器它实际需要的功能。 (See documentation) SYS_ADMIN 功能是授予挂载权限的功能。

关于linux - 在 Docker 容器中挂载 SMB/CIFS 共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989751/

相关文章:

node.js - NodeJS SSL 从哪里获取 .key 文件

php - 使用 wget 和 Windows Scheduler 运行 php 脚本

mysql - Azure 多容器 Web 应用程序明显无缘无故地停止了该站点

postgresql - 在 PostgreSQL docker run 中使用 pg_restore 恢复数据库

docker - 如何在 centos 7 lxc 中运行 docker?

linux - 使用linux对多个文件进行排序

c++ - AF_UNIX 套接字发送线程安全吗?

regex - 使用 sed 更改数字的最后两位数

python - 如何使用 winrm 无需密码登录 Windows,如果我可以使用 pywinrm 中的私钥登录机器

c++ - SQLite3和释放锁