我一直在玩Docker一段时间,并在处理持久数据时继续寻找相同的问题.
创建我Dockerfile和暴露量或使用--volumes-from来安装我的容器内的主文件夹.
我应该对主机上的共享卷应用哪些权限?
我可以想到两个选择:
到目前为止,我已经给了每个人读/写访问权限,所以我可以从Docker容器写入该文件夹.
将用户从主机映射到容器,这样我就可以分配更细化的权限.不确定这是可能的,但没有找到太多关于它.到目前为止,我所能做的就是以某个用户身份运行容器:docker run -i -t -user="myuser" postgres但是此用户的UID与我的主机不同myuser,因此权限不起作用.此外,我不确定映射用户是否会带来一些安全风险.
还有其他选择吗?
你们这些人/女士如何应对这个问题?
我在我的 MacBook 终端上。我尝试在我的本地机器上启动并运行 jenkins 容器。
我首先创建了一个 docker-compose.yml :
version: '3'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- $PWD/jenkins_home:/var/jenkins_home
networks:
- net
networks:
net:
Run Code Online (Sandbox Code Playgroud)
正如您在本volumes节中看到的,我已将jenkins_home当前目录下的文件夹定义为 jenkins 数据的卷。
然后在我机器的当前目录下,我创建了一个名为jenkins_home. 这是我当前的目录:
-rw-r--r-- 1 john 1349604816 220 Sep 4 00:08 docker-compose.yml
drwxr-xr-x 2 john 1349604816 64 Sep 4 00:06 jenkins_home
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要更改jenkins_home文件夹的所有权,以使 jenkins 容器能够在其中写入数据(因为 uid 不是 1000)。所以,我执行了命令:
sudo chown 1000:1000 jenkins_home/
然后,我当前的目录如下所示:
-rw-r--r-- 1 john 1349604816 220 Sep 4 00:08 docker-compose.yml
drwxr-xr-x 2 …Run Code Online (Sandbox Code Playgroud)