我正在寻找如何从Dockerfile中继承的Docker镜像存储和还原USER的方法。例如,我的父镜像指定了默认服务,并将USER设置为serviceuser。

现在,我有一个从父镜像继承的依赖镜像,并以根身份进行了一些修改,但希望将docker镜像用户保留为serviceuser。

我可以手动执行此操作:

父Dockerfile:

from default
USER serviceuser
ENTRYPOINT ["some-service"]

其他Dockerfile:
from parent
USER root
RUN apt-get install -y cool-stuff
USER serviceuser

但是,以这种方式,当我在父级中更改用户时,我必须更新所有子级图像。有没有办法在子Dockerfile中动态地执行此操作?

我考虑过的其他选项是在子脚本中使用sudo或以root用户身份运行入口点(即未设置USER)并在启动脚本中进行服务用户切换。但是两者都有安全隐患。

最佳答案

如果您是父图像的作者,则可以这样操作:

ENV serviceuser=foo
RUN useradd $serviceuser
USER $serviceuser

子图片:
USER root
RUN apt-get install -y cool-stuff
USER $serviceuser

关于docker - 存储和还原继承的Dockerfile USER设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38935511/

10-16 11:42