我正在从头开始构建/部署go / golang微服务。
是否可以在以这种方式构建的映像上指定非特权执行 - 映像上只有两个文件 - go可执行文件和根证书文件 - 因此似乎没有任何特权概念在容器内。
我也使用只读容器和--selinux-enabled = true --icc = false --iptables = true,但如果我知道可执行文件是作为“常见”非运行的,那么会感觉更温暖和模糊 - 特权用户。
答案 0 :(得分:0)
在从构建的图像" FROM scratch
"
但是根据容器的定义,该用户只能影响自己的(磁盘,内存,资源)空间,而不能影响主机。所以没关系。
唯一的另一种选择是仅从头开始定义一个容器来声明一个容器容器,您可以在一个能够与非root用户一起运行的完整映像中使用它。 请参阅" Running as a non-root inside a container"
$ echo 'FROM scratch
ADD data.tar /
VOLUME ["/data"]' > Dockerfile
$ docker build -t minimal .
$ docker create --name minimal minimal :
安装此最小卷容器的容器需要创建id为1000的用户:
$ docker run --rm --volumes-from minimal -it debian:jessie /bin/bash -c 'useradd postgres && ls -l /data'
这不是你需要的(因为Go程序不需要任何动态库,并且只能在系统调用上运行)。但这说明了非root用户如何使用" FROM scratch
"容器(此处为卷)