【发布时间】:2019-10-22 00:06:04
【问题描述】:
我正在运行一个容器,它将创建/修改一些我需要在容器生命周期之外保留的文件。因此,我为此目的在容器中添加了一个文件夹:
docker run -v $(pwd)/data:/app/data my-image
在第一次运行时,$(pwd)/data 不存在,所以 Docker 会为我创建它。但是,它会在用户执行其自己的守护进程时创建它,即root。这是有问题的,因为容器内的用户显然不是root。
为了解决这个权限问题,我在主机中创建了一个用户组,与容器中的用户具有相同的 ID,并授予他们访问 $(pwd)/data 的父文件夹的权限,并添加了组权限设置文件夹 (chmod g+s)。因此,如果我以 root 身份运行以下命令:
sudo mkdir whatver
文件夹whatever 将可由该组和扩展名由容器的用户修改。但是当 Docker 创建文件夹 $(pwd)/data 时,它仍然被创建为属于组 root,并且容器内的用户再次无法修改其中的数据。
现在,我通过在运行容器之前创建所需的文件夹来解决这个问题。然而,这是一个肮脏的解决方法,我正在寻找一个更清洁的解决方案。有没有其他人遇到过这个问题?这是 Docker 不尊重父文件夹上的组权限设置的问题,还是我在这里遗漏了什么/做错了什么?
【问题讨论】:
标签: docker permissions docker-volume