【发布时间】:2021-02-08 02:27:38
【问题描述】:
是否可以在 dockerfile 中使用RUN,同时将 systemd 作为 pid 1?
我正在尝试执行一个安装脚本,该脚本需要 systemd 存在并在系统上运行,位于 dockerfile 中。即
FROM debian:stable
RUN apt install -y systemd
RUN someInstallScriptThatRequiresSystemd.sh
【问题讨论】:
-
即使你安排在容器中运行
systemd(这通常是错误的做事方式),在docker build阶段与之交互也没有任何意义.每个RUN命令执行一个新进程,并且由RUN命令启动的所有进程在继续执行Dockerfile中的下一个命令之前都会关闭。如果您能告诉我们更多关于您的最终目标的信息,我们或许可以提出一些替代方案。 -
我通常不会在 docker 容器中使用初始化系统。我知道大多数论点为什么这是一个坏主意。不幸的是,我对此事没有真正的发言权,因为安装脚本依赖于 systemd 在很多地方运行的事实。我现在可能会继续使用 lxc。以防万一有人关心,我正在尝试在 docker 容器中安装多用户 nixpkgs。