在Docker中启动完整的容器?

根据这个github的问题 ,应该有可能用Docker 0.6或更高版本启动一个装满Upstart,cron等的容器,但是我该怎么做?

我期待着

docker run -t -i ubuntu /sbin/init 

会像工作一样

 lxc-start -n ubuntu /sbin/init 

我会得到一个login屏幕,但是却没有任何显示。 我也尝试使用SSH访问它,但没有运气。 我使用Docker索引的默认ubuntu镜像。

docker run ubuntu /sbin/init似乎与0.6.6完美地工作。 你不会得到一个login屏幕,因为Docker只pipe理这个过程。 相反,您可以使用docker ps -notrunc来获取完整的lxc容器ID,然后以root身份使用该容器中的lxc-attach -n <container_id>运行bash。 sshd没有安装在容器中,所以你不能ssh到它。

你可以使用ubuntu-upstart映像:

docker run -t -i ubuntu-upstart:14.04 /sbin/init

虽然这个解决scheme不幸被弃用,但是如果你需要一个完全的OS容器,像现在的普通Ubuntu 12.04,14.04或14.10(改变:14.04位)系统那样“驱动”就足够了。 如果没有指定版本,则默认为14.04。 我没有使用它,并且有一些安装更复杂的软件包(例如dbus!)的问题,但它可能适用于你。

唉Ubuntu已经在更新的版本中切换到systemd。 谷歌search显示,似乎正在进行的工作,使docker集装箱系统的工作,而不需要提高特权,但它似乎并没有准备好黄金时段。 希望16.04成为LTS的时候就可以做好准备了。

另一个选项当然是使用phusion / baseimage,但它有自己的方法来启动服务。 看起来更适合最小的多进程容器。