Centos 和 MacOS 不同的 Docker 卷挂载权限策略

标签 docker centos

我一整天都在定位问题,并将Github中的问题最小化。 .

当我将主机文件挂载到 docker 容器并进入 docker 容器然后运行 ​​ls -lash查看文件权限。挂载后,MacOS的文件似乎在user权限拥有的容器中它是由 Dockerfile 创建的,但是容器中的 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

最佳答案

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

较新版本的 Docker for Mac 附带一个 OSXFS 驱动程序,用于将 Mac 文件系统安装到嵌入式 Linux VM 中,并自动将 Linux 用户映射到 Mac uid。这有点像 NFS 压缩 uid,但更具动态性。您可以在以下位置阅读有关 OSXFS 的更多信息:https://docs.docker.com/docker-for-mac/osxfs/

关于Centos 和 MacOS 不同的 Docker 卷挂载权限策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886956/

相关文章:

postgresql - 我们如何将我们的 docker 应用程序连接到本地运行的 postgres?

docker - Docker:无法访问复制到某些图像的二进制文件

c - PECL 安装失败

java - 为什么Windows和Linux(java)上的字体渲染有所不同

php - 创建新文件时如何获取电子邮件警报? Cpanel/WHM/Centos

javascript - 无法使用 docker compose 安装包

docker - 如何使用修改后的 telegraf 配置文件运行 docker compose 文件?

docker - 任务定义中的命令导致异常

python - Centos 7 上用于 python3 的 psycopg2

php - Tuleap Docman 权限被拒绝