Dmy*_*hov 6 docker docker-volume rootless
我想为 Docker 容器中的非 root 用户提供对主机上安装的卷的写入访问权限。我在容器和主机内也有相同的非 root 用户和组。
\n运行容器时,我将主机卷安装到其中-v /some/folder:/some/folder。我这样做是因为我的应用程序在 docker 容器内运行需要将文件写入已安装的主机文件夹。但由于我以非 root 用户身份运行我的应用程序,因此它 \xe2\x80\x99t 无权写入该文件夹。
另外,我已在容器内自动更改此安装的文件夹权限。\n我已将以下用户和组指定为主机上此文件夹的所有者:\n\xe2\x80\x9cnonrootuser1:nonrootgroup1\xe2\x80\x9d
\n对于“rootful”docker,它工作正常,但如果它在容器内是无根的,它会在用户和组下面显示为该文件夹的所有者:\n\xe2\x80\x9croot:nobody\xe2\x80\ x9d
\n重现此内容的步骤:
\ngroupadd -g 1015 nonrootgroup1\nuseradd -u 1099 nonrootuser1\nRun Code Online (Sandbox Code Playgroud)\nsudo su\n\nmkdir -p /var/osquery/sock\necho "hello world" > /var/osquery/sock/file.txt\n\nchown root:nonrootgroup1 /var/osquery/sock\nchmod g+s /var/osquery/sock/\nRun Code Online (Sandbox Code Playgroud)\nFROM alpine:3.14\n\nRUN addgroup -g 1015 -S nonrootgroup1\nRUN adduser -D nonrootuser1 -u 1099\n\nUSER nonrootuser1:nonrootgroup1\n\nCMD ["tail", "-f", "/dev/null"]\nRun Code Online (Sandbox Code Playgroud)\ndocker run --rm -d --name sample-app -v /var/osquery/sock:/var/osquery/sock $(docker build . -q)\nRun Code Online (Sandbox Code Playgroud)\ndmytro@dmytro:~/dev/sample-image$ docker exec sample-app id\n\nuid=1099(nonrootuser1) gid=1015(nonrootgroup1) groups=1015(nonrootgroup1)\nRun Code Online (Sandbox Code Playgroud)\n目录 /var/osquery/sock 被分配给组 \'nobody\' 而不是 \'nonrootgroup1\' 组
\ndmytro@dmytro:~/dev/sample-image$ docker exec sample-app ls -lah /var/osquery\ntotal 12K\ndrwxr-xr-x 3 root root 4.0K Dec 28 10:47 .\ndrwxr-xr-x 1 root root 4.0K Dec 28 10:47 ..\ndrwxr-s--- 2 nobody nobody 4.0K Dec 28 09:34 sock\nRun Code Online (Sandbox Code Playgroud)\n主机详细信息如下:
\nKernel Version: 5.4.0-135-generic\nOperating System: Ubuntu 20.04.5 LTS\nStorage Driver: overlay2\nRun Code Online (Sandbox Code Playgroud)\n请建议。
\n谢谢!
\n我尝试在“userns-remap”配置中进行设置daemon.json,但 docker 守护进程不会启动它,因为它缺乏创建权限dockremap用户和组的权限。
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |