我整天找出问题所在,并在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中的错误吗?
答案 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的更多信息。