Wil*_*ill 8 linux privileges docker dockerfile distroless
Distroless 镜像有 3 个用户:
> docker run --rm --entrypoint cat gcr.io/distroless/nodejs:debug /etc/passwd
root:x:0:0:root:/root:/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/sbin/nologin
nonroot:x:65532:65532:nonroot:/home/nonroot:/sbin/nologin
USER如果您在Dockerfile中没有说明的情况下运行映像,则映像将以uid=0(root) gid=0(root)运行。
我想避免这种情况并使用非特权用户。
除了没有人没有目录之外,在我的 Dockerfile 中使用和/home之间有什么区别?USER nobodyUSER nonroot
有两种类型的 distroless 镜像可用于生产:
带有最新标签
此图像表示,gcr.io/distroless/base默认情况下有“Config.User:0”和“Config.WorkingDir:/”配置,如果您不用于USER将用户切换到nonroot其中定义的用户,否则它将启动与用户的容器root。
带有非root标签
此图像表示,gcr.io/distroless/base:nonroot默认情况下有“Config.User:65532”和“Config.WorkingDir:/home/nonroot”配置,无需用于将USER用户更改为非root用户。
PS:也许您需要将多阶段构建中复制文件的所有权更改为nonroot用户。
nobody user
用户
的目的nobody与 distroless 映像无关,而是与 Linux 本身有关,这里对此进行了很好的描述