Linux 我怎样才能使用;docker run-v“;不允许容器删除映射的内容?

Linux 我怎样才能使用;docker run-v“;不允许容器删除映射的内容?,linux,docker,dockerfile,Linux,Docker,Dockerfile,我知道-v选项是将外部文件夹映射到容器中的方法 但是,当我只打算提供读取访问时,使用此选项允许容器删除主机上的数据。这怎么能限制?你的观察是正确的;如果容器被授予使用-v访问卷的权限,则可以访问其中的文件。默认情况下,访问是读/写的,实例可以删除数据文件 最佳实践是不允许访问它不需要的容器。因此,如果一个容器不需要访问一个卷来持久化或与其他容器共享数据,就不要映射该卷 如果容器确实需要数据,但不需要写入数据,您可以: 你的观察是正确的;如果容器被授予使用-v访问卷的权限,则可以访问其中的文件。默

我知道
-v
选项是将外部文件夹映射到容器中的方法


但是,当我只打算提供读取访问时,使用此选项允许容器删除主机上的数据。这怎么能限制?

你的观察是正确的;如果容器被授予使用-v访问卷的权限,则可以访问其中的文件。默认情况下,访问是读/写的,实例可以删除数据文件

最佳实践是不允许访问它不需要的容器。因此,如果一个容器不需要访问一个卷来持久化或与其他容器共享数据,就不要映射该卷

如果容器确实需要数据,但不需要写入数据,您可以:


你的观察是正确的;如果容器被授予使用-v访问卷的权限,则可以访问其中的文件。默认情况下,访问是读/写的,实例可以删除数据文件

最佳实践是不允许访问它不需要的容器。因此,如果一个容器不需要访问一个卷来持久化或与其他容器共享数据,就不要映射该卷

如果容器确实需要数据,但不需要写入数据,您可以:


这绝不是一个安全“漏洞”(即影响安全性的无意副作用)。这是预期行为,但不鼓励绑定安装。而且它根本不影响安全。“无意”递归和强制删除?您也可以在主机上执行此操作


我的印象是,你混合了虚拟机和容器的概念。虚拟机是在主机上运行的独立操作系统。容器(理想情况下)是一个隔离的进程,它可能有权也可能没有权访问主机文件系统的某些相当有限的部分。如果您认为容器是一个软件包,它带来了它的依赖性和(主要是)预定义的配置,并且包管理器能够限制所述过程使用的资源,那么这与事实并不遥远。

这决不是一个安全“漏洞”(即影响安全性的无意副作用)。这是预期行为,但不鼓励绑定安装。而且它根本不影响安全。“无意”递归和强制删除?您也可以在主机上执行此操作


我的印象是,你混合了虚拟机和容器的概念。虚拟机是在主机上运行的独立操作系统。容器(理想情况下)是一个隔离的进程,它可能有权也可能没有权访问主机文件系统的某些相当有限的部分。如果您认为容器是一个软件包,它带来了它的依赖性和(大部分)预定义的配置,并且包管理器能够限制所述流程使用的资源,那么这与事实并不遥远。

如果有人记录了它违反的安全约束,那么这只是一个安全漏洞。容器被非常明确地记录为完全按照您在这里描述的方式运行,因此没有任何约束被打破。也就是说,您有一个有效的问题,但最初编写的标题是一个有点煽动性的断言。如果有人记录了它违反的安全约束,那么这只是一个安全漏洞。容器被非常明确地记录下来,完全按照您在这里描述的方式运行,因此没有任何约束被打破。也就是说,您有一个有效的问题,但最初编写的标题是一个有点煽动性的断言。
$ docker run -it -v $PWD/path/to/data:/data myimg:latest
$ docker run -d \
   --name=nginxtest \
   -v nginx-vol:/usr/share/nginx/html:ro \
   nginx:latest