【发布时间】:2016-01-20 03:53:36
【问题描述】:
四处搜索之后,我仍然对您是否可以拥有一个运行 Ubuntu 的 docker 容器 以及一个工作的 init 系统(新贵) 和 syslog 感到困惑强>,还是不强。
我知道 docker 容器用于运行单个进程而不是完整的操作系统,但我的用例是在各种 linux 发行版上测试守护进程,确保守护进程在崩溃等情况下成功启动、停止和重新启动等,使用记录到系统日志。因此,我正在尝试决定是否可以为此使用 docker 容器,或者使用Vagrant 会更好。
我发现的一些资源令人困惑:
-
容器无法连接到 Upstart docker/docker#1024
因为 Docker 用自己的替换了默认的 /sbin/init,所以有 无法在 Docker 容器中运行 Upstart 初始化。
-
传统上,Docker 容器在启动时会运行一个进程,例如 Apache 守护进程或 SSH 服务器守护进程。通常,尽管您想在一个容器中运行多个进程。有很多方法可以实现这一点,从使用简单的 Bash 脚本作为容器的
CMD指令的值到安装进程管理工具。
所以基本上我最后需要的是能够运行:
$ initctl start <daemon>
$ initctl stop <daemon>
当然是在/etc/init/<daemon>.conf 创建必要的conf 文件后,并查看syslog 的日志。
【问题讨论】:
-
看看 baseimage-docker github.com/phusion/baseimage-docker 它有一个初始化系统和一个系统日志
-
是的,但它不是暴发户。我的守护进程将 upstart 检测为 init 系统,因为它是 Ubuntu 上的默认设置,因此它使用
initctl。这不适用于他们的自定义初始化系统。 -
你有没有考虑过除了暴发户以外的初始化系统?我知道 phusion[1] 使用 ubuntu 作为其基础映像。它使用 runit[2]。还有其他的守护进程,比如 supervisor[3]。 [1]:github.com/phusion/baseimage-docker [2]:smarden.org/runit [3]:supervisord.org
标签: ubuntu docker init syslog upstart