Docker卷安装权限策略在Centos和MacOS中有所不同

时间:2019-02-26 13:46:52

标签: docker centos

我整天找出问题所在,并在Github中将问题最小化。

当我将主机文件安装到docker容器中,然后输入docker容器,然后运行ls -lash来查看文件权限。挂载后,似乎容器中MacOS的文件由Dockerfile创建的user拥有,而容器中Centos的文件由root拥有的权限。它在MacOS和Centos7.6之间使用相同的docker引擎版本(18.09.2)进行测试。

docker-problem git:(master) ✗ docker run -it -v $PWD:/home/level docker/test bash 
flaskuser@59aeaacf0f4b:/home/level$ ls -lash
total 8.0K
   0 drwxr-xr-x  4 flaskuser flaskgroup  128 Feb 25 19:24 .
4.0K drwxr-xr-x  1 flaskuser flaskgroup 4.0K Feb 25 19:21 ..
   0 drwxr-xr-x 15 flaskuser flaskgroup  480 Feb 25 19:27 .git
4.0K -rw-r--r--  1 flaskuser flaskgroup  382 Feb 26 11:21 Dockerfile
[root@vultr docker-problem]# docker run -it -v $PWD/:/home/level/ docker/test bash
flaskuser@c843984693a5:/home/level$ ls -lash
total 16K
4.0K drwxr-xr-x 3 root      root       4.0K Feb 26 11:29 .
4.0K drwxr-xr-x 1 flaskuser flaskgroup 4.0K Feb 26 13:14 ..
4.0K drwxr-xr-x 8 root      root       4.0K Feb 26 11:29 .git
4.0K -rw-r--r-- 1 root      root        284 Feb 26 11:29 Dockerfile

这是Docker中的错误吗?

Test in MacOs

Test in Centos7.6

Github Link

1 个答案:

答案 0 :(得分:0)

主机卷将具有主机的所有权和权限传递到容器中。这是通过uid / gid在文件系统级别完成的,而不是通过用户名或组名完成的,而用户名或组名在容器和主机之间可能会有所不同。

较新版本的Docker for Mac随附OSXFS驱动程序,可将Linux文件自动映射到Mac uid来将Mac文件系统安装到嵌入式Linux VM中。这有点像NFS压扁uid,但动态性更高。您可以在https://docs.docker.com/docker-for-mac/osxfs/

上了解有关OSXFS的更多信息。