$ docker run -it -v $PWD/path/to/data:/data myimg:latest
我知道-v
选项是将外部文件夹映射到容器的方式。
但是,当我仅打算提供读取访问权限时,使用此选项可以使容器删除主机上的数据。如何约束呢?
答案 0 :(得分:4)
您的观察是正确的;使用-v授予对卷的访问权限的容器将有权访问其中的文件。默认情况下,访问权限是读/写,并且实例可以删除数据文件。
最佳做法是不访问不需要的容器。因此,如果容器不需要访问卷以保留或与其他容器共享数据,则只需不映射该卷即可。
如果容器确实需要数据但不需要写入数据,则可以mount the volume as read only:
$ docker run -d \
--name=nginxtest \
-v nginx-vol:/usr/share/nginx/html:ro \
nginx:latest
答案 1 :(得分:0)
这绝不是安全“漏洞”(又是影响安全性的意外副作用)。尽管不鼓励绑定安装,但它是预期的行为。而且它根本不影响安全性。 “非故意” 递归和强制删除?您也可以在主机上执行此操作。
我的印象是,您将虚拟机和容器的概念混合在一起。虚拟机是在主机上运行的隔离操作系统。容器(理想情况下)是一个隔离的进程,该进程可能会或可能不会访问主机文件系统的某些相当有限的部分。当您将容器视为带来其依赖项和(主要是)预定义配置的软件包,并且软件包管理器能够限制所述过程使用的资源时,这与事实相去不远。