存储和恢复inheritance的Dockerfile USER设置

我正在寻找如何存储和恢复Dockerfile中inheritance的docker镜像的USER。 例如,我的父图像指定一个默认服务,并将USER设置为serviceuser。

现在我有一个依赖的图像,从父图像inheritance,作为根进行一些修改,但要保持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中dynamic地做到这一点?

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

如果你是父图像的作者,你可以这样做:

 ENV serviceuser=foo RUN useradd $serviceuser USER $serviceuser 

小孩形象:

 USER root RUN apt-get install -y cool-stuff USER $serviceuser