从头开始非特权执行

我从头开始在图像上构build/部署go / golang微服务。

是否有可能在这种方式构build的图像上指定非特权执行 – 图像上只有两个文件 – 可执行文件和根证书文件 – 因此在容器中似乎没有任何特权的概念。

我也使用只读容器和–selinux-enabled = true –icc = false –iptables = true,但是如果我知道可执行文件是作为“普通”非特权用户运行的话,会感觉更加温暖和模糊。

用户(root)在从“ FROM scratch ”构build的映像启动的容器中运行CMD时似乎没有任何select。

但是通过定义一个容器,该用户只能影响自己的(磁盘,内存,资源)空间,而不是主机。 所以这应该不重要。

唯一的另一种方法是从头开始定义一个容器,仅用于声明一个容器容器,你可以在一个完全成熟的映像中使用,这个映像可以用非root用户运行。
请参阅“ 作为容器内的非root用户运行 ”

 $ echo 'FROM scratch ADD data.tar / VOLUME ["/data"]' > Dockerfile $ docker build -t minimal . $ docker create --name minimal minimal : 

安装这个最小卷容器的容器需要创buildid为1000的用户:

 $ docker run --rm --volumes-from minimal -it debian:jessie /bin/bash -c 'useradd postgres && ls -l /data' 

这不是你所需要的(因为Go程序不需要任何dynamic库,只能在系统调用中运行)。 但是这说明了非root用户如何使用“ FROM scratch ”容器(这里是一个卷)