小编use*_*772的帖子

docker非root用户绑定安装权限,带有--userns-remap

全部:尝试使绑定​​安装权限正常运行。

我的目标是在容器中绑定装入卷,以便:

  • (a)容器未以root用户身份运行入口点
  • (b)docker-daemon配置了--userns-remap,因此容器在主机上没有根
  • (c)我可以使用容器绑定安装和读写普通用户可读写的卷(主机上的UID:GID 1000)
  • (d)创建文件时,它们都具有我的常规主机用户的权限,而不是root或没有权限。

从安全角度来看,我们要避免容器在主机上具有根目录(这很容易理解),这是要求(b)。需求a,c和d来自将容器日志发送到文件系统上绑定安装的目录的需求,因此它们可以被splunk消化。这种配置是/将是在kubernetes上进行日志记录的首选方法(有关此内容的更多信息,请参见 此处)。

有没有人能满足上述所有4个要求?

这是解决问题的最简单方法。使用--userns-remap运行Docker:

DOCKER_OPTS="--userns-remap=1000:1000"
Run Code Online (Sandbox Code Playgroud)

启动容器高山,以根用户身份运行它。观察foo.txt的权限是没有人。我认为它们是root或1000:1000,因为那就是文件系统上的内容:

dcowden@ubuntu:~/gitwork/file-perm-stuff$ docker run --rm -it -v /home/dcowden/gitwork/file-perm-stuff/testlogs:/logs alpine /bin/sh
/ # ls -ln /logs
total 0
-rw-rw-r--    1 65534    65534            0 Aug 20 19:08 foo.txt
/ # exit
Run Code Online (Sandbox Code Playgroud)

退出容器,然后查看文件。观察它们是1000:1000拥有的,因此userns remap将它们搞砸了:

dcowden@ubuntu:~/gitwork/file-perm-stuff$ ls -ln testlogs
total 0
-rw-rw-r-- 1 1000 1000 0 Aug 20 15:08 foo.txt
dcowden@ubuntu:~/gitwork/file-perm-stuff$ ls -ln .
total 8
-rw-rw-r-- 1 1000 1000  248 Aug 20 16:07 Dockerfile
drwxrwxr-x 2 1000 1000 …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu docker

6
推荐指数
0
解决办法
2584
查看次数

标签 统计

docker ×1

linux ×1

ubuntu ×1