假设我有一个使用非root 用户运行的容器,我想将主目录中的卷目录绑定到该容器中。然后容器将写入该目录。比如,主机上的目录是/tmp/container/data
。如果该路径在主机上存在不,我会发现它(由docker)创建了所有权 root 。因此,容器无法在该目录中写入任何内容(访问被拒绝),因为我的容器未使用用户 root 运行。
当然我可以在启动容器之前在主机端创建具有正确权限的/tmp/container/data
目录,但是这个解决方案显然无法扩展 - 我将不得不为每个容器执行此操作我想使用目录不存在的主机的绑定卷。
所以我的问题是,什么是使用主机中的绑定卷用于尚不存在的目录的最佳方式,同时仍然让非root容器具有对卷的写访问权。
答案 0 :(得分:1)
您准确描述了docker的正常行为,来自docker引擎的不存在的绑定挂载将初始化为root拥有的空目录。请注意,这不会发生在swarm模式下,它将无法在主机上安排容器。
用于避免此问题的选项包括: