在docker scratch映像中运行静态构建时的安全性?
我目前正在评估减少图像大小的不同选项。除了alpine,还可以选择在scratch图像中使用多级docker构建运行静态构建,大多数人称之为安全构建(我同意攻击面)。但是由于不涉及用户管理等,这是否意味着要以与docker守护进程相同的权限运行二进制文件?这里的安全点在哪里?您仍然可以使用Dockerfile中的在docker scratch映像中运行静态构建时的安全性?,docker,dockerfile,static-linking,docker-multi-stage-build,Docker,Dockerfile,Static Linking,Docker Multi Stage Build,我目前正在评估减少图像大小的不同选项。除了alpine,还可以选择在scratch图像中使用多级docker构建运行静态构建,大多数人称之为安全构建(我同意攻击面)。但是由于不涉及用户管理等,这是否意味着要以与docker守护进程相同的权限运行二进制文件?这里的安全点在哪里?您仍然可以使用Dockerfile中的user命令或在启动容器时(--user=)为SCRATCH中的图像定义用户。最安全的选项将是Dockerfile中的user命令指定的非root用户-它将是默认的容器选项。如果容器需要
user
命令或在启动容器时(--user=
)为SCRATCH
中的图像定义用户。最安全的选项将是Dockerfile中的user
命令指定的非root用户-它将是默认的容器选项。如果容器需要root用户,那么您可以使用,这样容器中就不会使用真正的root
顺便说一句:非根用户的典型问题是低端口绑定,但您可以绑定高端口或使用
--cap add net\u bind\u service
/--sysctl net.ipv4.ip\u unprivileged\u port\u start=0
(内核4.11+).您仍然可以使用Dockerfile中的user
命令或在启动容器时(--user=
),为来自SCRATCH
的图像定义用户。最安全的选项将是Dockerfile中的user
命令指定的非root用户-它将是默认的容器选项。如果容器需要root用户,那么您可以使用,这样容器中就不会使用真正的root
顺便说一句:非根用户的典型问题是低端口绑定,但您可以绑定高端口或使用--cap add net\u bind\u服务
/--sysctl net.ipv4.ip\u unprivileged\u port\u start=0
(内核4.11+)