全部:尝试使绑定安装权限正常运行。
我的目标是在容器中绑定装入卷,以便:
从安全角度来看,我们要避免容器在主机上具有根目录(这很容易理解),这是要求(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)