带有upstart和syslog的Ubuntu docker容器

在搜索之后,我仍然感到困惑,你是否可以让一个运行Ubuntu的docker容器与一个工作的init系统(upstart)和syslog一起运行.

我知道docker容器用于运行单个进程而不是完整的操作系统,但我的用例是测试各种Linux发行版上的守护进程,确保守护进程在崩溃时成功启动,停止和重新启动等,并记录到syslog .所以我试图决定是否可以使用docker容器,或者我可能会更好用Vagrant.

我发现的一些资源令人困惑:

>容器无法连接到Upstart docker/docker#1024

Because Docker replaces the default /sbin/init with its own, there’s
no way to run the Upstart init inside a Docker container.

> Using Supervisor with Docker

Traditionally a Docker container runs a single process when it is launched, for example an Apache daemon or a SSH server daemon. Often though you want to run more than one process in a container. There are a number of ways you can achieve this ranging from using a simple Bash script as the value of your container’s CMD instruction to installing a process management tool.

基本上我最终需要的是能够运行:

$initctl start <daemon>
$initctl stop <daemon>

当然,在/etc/init/\u0026lt;daemon\u0026gt;.conf中创建必要的conf文件后,使用syslog查看日志.

最佳答案
看到
https://github.com/BITPlan/docker-stackoverflowanswers/tree/master/33233329
重复这些步骤

从Dockerfile开始

FROM ubuntu:14.04

建设它:

docker build -t bitplan/ubuntutest:0.1 .
Sending build context to Docker daemon 2.048 kB
Step 0 : FROM ubuntu:14.04
---> 0a17decee413
Successfully built 0a17decee413

运行它:

docker run -it bitplan/ubuntutest:0.1 /bin/bash

并检查正在运行的服务:

 root@50a738241d03:/# service --status-all
 [ ? ]  console-setup
 [ + ]  cron
 [ ? ]  killprocs
 [ ? ]  kmod
 [ ? ]  networking
 [ ? ]  ondemand
 [ - ]  procps
 [ ? ]  rc.local
 [ + ]  resolvconf
 [ - ]  rsyslog
 [ ? ]  sendsigs
 [ - ]  sudo
 [ - ]  udev
 [ ? ]  umountfs
 [ ? ]  umountnfs.sh
 [ ? ]  umountroot
 [ - ]  urandom

您可以看到在基于OS的典型容器中运行多个服务.如果你安装更多的东西,如apache,mysql等,将会有更多的服务.

所以如果你想开始更多这些我建议使用

服务开始
   服务停止

你会发现,例如在我们的docker-mediawiki图片的入口点:

https://github.com/BITPlan/docker-mediawiki/blob/master/docker-entrypoint.sh

见例如

service mysql start

在那里.

转载注明原文:带有upstart和syslog的Ubuntu docker容器 - 代码日志