我正在寻找如何从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/