如何从特权容器中访问Docker主机文件系统

4

不使用卷 -v

我可以给docker run添加--privileged,但我不能挂载任意卷,因为我依赖另一项工具来创建docker容器,所以我的问题是,如何通过--privileged=true获得对docker主机文件系统的完全访问权限?这足够了吗?

特别需要从docker容器内部访问主机的/run/。我还可以包含--cap-add,这可能有所帮助。唯一我做不到的是挂载卷。


你应该使用卷,参见文档http://docs.docker.com/userguide/dockervolumes/,例如 docker run -v /run:/run - user2915097
正如问题中所表达的,我无法控制docker run命令并且无法添加-v,但我可以做其他事情,比如将privileged设置为true甚至启用任何Linux功能。 - Leo Gallucci
我需要读写权限。 - Leo Gallucci
Docker基本上是进程隔离,容器不应该在主机上做太多事情。如果您无法使用正确的参数启动运行命令,则可能存在问题。 - user2915097
1
我正在寻找一个有见地的答案,而不是一个“理论上”的答案。 - Leo Gallucci
显示剩余2条评论
1个回答

4

我曾面对类似的情况,我希望能够从特权容器本身访问主机的完整文件系统。我采用的方法是改变命名空间为主机命名空间,然后执行一个命令。该命令实际上在主机上执行。

在主机上运行以启动容器:

docker run --privileged --pid=host -it xxxxxx

在容器中运行
nsenter -t 1 -m -u -n -i <COMMAND>

该COMMAND将在主机上执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接