【问题标题】:nobody & nonroot user in distroless imagesdistroless 镜像中的 nobody 和非 root 用户
【发布时间】:2022-12-15 20:52:42
【问题描述】:

Distroless images 有 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 指令的情况下运行图像文件图像运行为uid=0(根) gid=0(根).

我想避免这种情况并使用非特权用户。

以外没有人没有 /home 目录,在我的 Dockerfile 中使用 USER nobodyUSER nonroot 有什么区别?

【问题讨论】:

    标签: linux docker dockerfile privileges distroless


    【解决方案1】:

    有两种类型的 distroless 映像可用于生产:

    带有最新标签
    此图像表示,gcr.io/distroless/base 默认情况下具有“Config.User: 0”和“Config.WorkingDir: /”配置,如果您不使用USER 将用户切换到已定义的nonroot 用户在其中,否则它将以 root 用户启动容器。

    带非根标签
    此图像表示,gcr.io/distroless/base:nonroot 默认情况下具有“Config.User: 65532”和“Config.WorkingDir: /home/nonroot”配置,无需使用 USER 将用户更改为非 root 用户。
    PS:也许您需要将多阶段构建中复制文件的所有权更改为nonroot用户。

    没有人用户
    nobody 用户的目的与 distroless 图像无关,它与 Linux 本身有关,很好地描述了here

    【讨论】:

      猜你喜欢
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2017-07-03
      • 2014-08-24
      • 2021-07-11
      相关资源
      最近更新 更多