use*_*772 6 linux ubuntu docker
全部:尝试使绑定安装权限正常运行。
我的目标是在容器中绑定装入卷,以便:
从安全角度来看,我们要避免容器在主机上具有根目录(这很容易理解),这是要求(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 4096 Aug 20 16:09 testlogs
Run Code Online (Sandbox Code Playgroud)
尝试创建非特权容器用户的更复杂的Dockerfile也会失败,尽管这很明显,因为它已经无法与root一起使用。它不像2中的动态解决方案那样复杂,但是仍然失败:
FROM alpine:3.4
ENV USER_ID=1000
ENV USER_NAME="appuser"
RUN addgroup -g $USER_ID -S $USER_NAME
RUN adduser -u $USER_ID -S -G $USER_NAME $USER_NAME
RUN mkdir /logs && chown $USER_NAME:$USER_NAME /logs
VOLUME /logs
WORKDIR /logs
USER $USER_NAME
Run Code Online (Sandbox Code Playgroud)
我知道这个类似的问题,但没有提供答案。实际上,仅使用--userns-remap = 1000:1000即可生成合适的/ etc / subuid配置,而无需进行任何手动编辑,但仍不适用于绑定安装。
我也知道这个答案,而这一个了,但我似乎已经匹配了用户ID为都表明,没有合适的结果。
我按照此处的说明进行操作,并且实现了除上述(b)之外的所有要求的设置-该设置在我不使用userns-remap时效果很好
当我将此行添加到DOCKER_OPTS(启用userns-remap)时:
--userns-remap = 1000:1000
然后整个事情停止了,我似乎什么也没做。绑定安装的卷似乎没有任何人拥有。我尝试了以下操作,但没有任何影响:
我的猜测是,由于我同时告诉docker将容器根用户映射到我的UID(1000),并且还明确创建了具有相同UID:GUID的另一个用户,因此出现了问题。那应该没问题-在容器中,根目录为0:0,我也创建了UID:GUI 1000:1000。创建文件时,超级用户和非超级用户都应创建所有权为1000:1000的文件。当同时以非超级用户和超级用户身份运行映像时,实际上就是这种情况。
只是尝试写入绑定安装的卷时一切都失败了。
这是我的设置:
Docker 1.12 Ubuntu 14.04主机上的未特权UID:GID:1000:1000
Docker信息:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 41
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /var/lib/docker/100000.100000/aufs
Backing Filesystem: extfs
Dirs: 25
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host null bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: apparmor
Kernel Version: 3.13.0-83-generic
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 7.785 GiB
Name: ubuntu
ID: 2OO6:ESDJ:WGQ2:UGEQ:5ULF:MXNY:E5XC:WWWN:KJGJ:X2GT:I6VV:V2DN
Docker Root Dir: /var/lib/docker/100000.100000
Debug Mode (client): false
Debug Mode (server): false
Username: dcowden
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Insecure Registries:
127.0.0.0/8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2584 次 |
| 最近记录: |