为什么创建带有自定义用户的docker容器会重新发布派生图像?

为什么创建带有自定义用户的docker容器会重新发布派生图像?,docker,dockerfile,Docker,Dockerfile,我正在阅读docker security中关于以非root用户身份运行docker进程的内容。它指出: FROM openjdk:8-jdk RUN useradd --create-home -s /bin/bash user WORKDIR /home/user USER user 这很简单,但迫使我们重新发布所有这些衍生图像, 制造维护噩梦 1重新发布衍生图像意味着什么? 2这怎么会是一场维护噩梦? 3这难道不是一种常见的做法吗?因为互联网上的大多数示例都使用类似的方法以非根用户身份运行

我正在阅读docker security中关于以非root用户身份运行docker进程的内容。它指出:

FROM openjdk:8-jdk
RUN useradd --create-home -s /bin/bash user
WORKDIR /home/user
USER user
这很简单,但迫使我们重新发布所有这些衍生图像, 制造维护噩梦

1重新发布衍生图像意味着什么? 2这怎么会是一场维护噩梦?
3这难道不是一种常见的做法吗?因为互联网上的大多数示例都使用类似的方法以非根用户身份运行docker

来自openjdk:8-jre 复制myapp.jar/ CMD[java,-jar,/myapp.jar] 现在,我想使用您的技术来创建一个普通的非root用户。所以我需要将此Dockerfile更改为


从my/openjdk:8-jre感谢您的解释,但我仍然不清楚。除了为用户创建主目录和shell之外,您的最终dockerfile与上面的示例有何不同。为什么我需要写“从我的/openjdk:8-jre”?在我最后的Dockerfile中,我实际上正在安装应用程序。要使用仅添加非root用户的问题中的Dockerfile,您需要修改安装应用程序的Dockerfile,使其基于该文件(我的中间示例),如果JRE更新,则需要重新生成两个映像。