如何管理卷的权限

时间:2018-03-28 08:48:23

标签: docker dockerfile

我正在使用Docker运行后台服务分析我的开发目录。我在我的容器上使用docker run -v /host/project:/media/analysis:rw来运行它。

但是,这个命令导致一个问题,这个卷中的文件属于UID 1000(root),而我想用我的服务打开它。我正在使用chown user:user -R /media/analysis但是这需要从docker容器运行命令,我想避免用户在运行容器后执行命令。

第二个问题是,即使我使用run命令运行脚本,因为它是一个开发人员目录,肯定会添加新文件,我发现在主机上创建新文件被视为Docker的“root”文件意味着我还需要在服务处理时更新卷权限。

此致 沃尔多

更新:

我想到了解决问题的另一种方法,但是作为初学者,我想知道是否有正确的方法来做到这一点。

在我的Dockerfile上,我添加了一个ENTRYPOINT script.sh,内容如下:

#!/bin/bash
olduser=$(id -u sonarqube)
oldgroup=$(id -g sonarqube)

usermod -u ${USER_ID} sonarqube \;
groupmod -g ${GROUP_ID} sonarqube ;

find / -group ${oldgroup} -exec chgrp -h sonarqube {} \;
find / -user ${olduser} -exec chown -h sonarqube {} \;

然后,我使用以下命令运行我的容器:

docker run -v /project:/analysis:rw -e USER_ID=$(id -u) GROUP_ID=$(id -g) image

1 个答案:

答案 0 :(得分:-1)

您可以从Dockerfile设置拥有用户/组。

RUN mkdir -p /somedir && chown -R someone:someone /somedir
VOLUME ["/somedir"]

还有其他方法可以做到这一点,所以要阅读;)https://github.com/moby/moby/issues/2259

相关问题