Docker 为什么bind mount后权限不对?
Docker Why are permissions wrong after bind mount?
我正在将我的主机 /tmp/docker
挂载到我的容器中的 /home/vault/tmp/
,但是我的容器中的用户 vault
没有写权限,即使在我的主机上,[=14] =] 设置为 777
并且 uid
和 gid
值在主机和容器中也设置为相同。如何解决此问题并确保我的用户 vault
具有 write/owner 权限?
主机
$ ls -la /tmp/docker/
total 8
drwxrwxrwx 2 ron ron 4096 Feb 5 19:34 .
drwxrwxrwt 12 root root 4096 Feb 13 09:49 ..
ron@ENGDEV:~/novax-prs/docker$ id -u; id -g
1003
1003
来宾
$ ls -la /home/vault/tmp/
total 8
drwxr-xr-x 2 root root 4096 Feb 13 06:47 .
drwxr-xr-x 1 vault vault 4096 Feb 13 18:06 ..
vault@novax_prs_build:~$ id -u; id -g
1003
1003
绑定挂载
docker run -it \
-e LOCAL_USER_ID=`id -u` \
--user "$(id -u):$(id -g)" \
-v ${dir}:/home/vault/ccimx6ulstarter \
-v /tmp/docker:/home/vault/tmp:Z \
${name}
有趣的是,/home/vault/ccimx6ulstarter/
目录具有在容器中正确设置的用户权限。
在主机用户的主目录中创建了一个 ~/tmp_docker/
并使用 -v
绑定安装它,在容器中获得了正确的权限并将使用它并且可以将其用作 ~/tmp/
在我的容器里!
说到这里,我不确定为什么我的主机的 /tmp/docker/
不会绑定正确的权限。
您的 /tmp 文件夹可能使用 tmpfs,它的行为不同于例如 ext4,尤其是涉及 SELinux 标签时(使用 :Z
选项)。
尝试使用位于 ext4 文件系统上的文件夹。
我正在将我的主机 /tmp/docker
挂载到我的容器中的 /home/vault/tmp/
,但是我的容器中的用户 vault
没有写权限,即使在我的主机上,[=14] =] 设置为 777
并且 uid
和 gid
值在主机和容器中也设置为相同。如何解决此问题并确保我的用户 vault
具有 write/owner 权限?
主机
$ ls -la /tmp/docker/
total 8
drwxrwxrwx 2 ron ron 4096 Feb 5 19:34 .
drwxrwxrwt 12 root root 4096 Feb 13 09:49 ..
ron@ENGDEV:~/novax-prs/docker$ id -u; id -g
1003
1003
来宾
$ ls -la /home/vault/tmp/
total 8
drwxr-xr-x 2 root root 4096 Feb 13 06:47 .
drwxr-xr-x 1 vault vault 4096 Feb 13 18:06 ..
vault@novax_prs_build:~$ id -u; id -g
1003
1003
绑定挂载
docker run -it \
-e LOCAL_USER_ID=`id -u` \
--user "$(id -u):$(id -g)" \
-v ${dir}:/home/vault/ccimx6ulstarter \
-v /tmp/docker:/home/vault/tmp:Z \
${name}
有趣的是,/home/vault/ccimx6ulstarter/
目录具有在容器中正确设置的用户权限。
在主机用户的主目录中创建了一个 ~/tmp_docker/
并使用 -v
绑定安装它,在容器中获得了正确的权限并将使用它并且可以将其用作 ~/tmp/
在我的容器里!
说到这里,我不确定为什么我的主机的 /tmp/docker/
不会绑定正确的权限。
您的 /tmp 文件夹可能使用 tmpfs,它的行为不同于例如 ext4,尤其是涉及 SELinux 标签时(使用 :Z
选项)。
尝试使用位于 ext4 文件系统上的文件夹。