我发现许多软件包安装都调用 systemd 来启动其软件。问题是,如果你想在 docker 中安装软件,它将导致安装失败。因为默认情况下,如果安装后脚本中出现故障,Debian 会使安装失败。
Elasticsearch 团队做了一个解决方法(我不确定他们是否明白它为 docker 用户修复了这个问题)。但对于许多软件包来说,这都是一个问题。
有没有办法让它们在 debian/ubuntu docker 中工作?
答案1
这不是答案,据我所知没有好的答案。
但具体做法如下:
- 自行安装软件
- 将包含此修正的补丁发送给软件包维护者
systemctl daemon-reload || true
# instead of
systemctl daemon-reload
无论之后调用了什么systemctl
,您都应该建议添加,|| true
以防软件包的安装后脚本中存在此类调用。这解决了 2 个问题:
- 有可能
systemctl
被掩盖了。 - 它可能
systemctl
无法工作(因为它不是作为第一个 pid 启动的),就像在 docker 中一样。