27

根据这个 github 问题,应该可以使用 Upstart、cron 等使用 Docker 0.6 或更高版本启动一个完整的容器,但我该怎么做呢?

我期待着

docker run -t -i ubuntu /sbin/init

会像

lxc-start -n ubuntu /sbin/init

我会得到一个登录屏幕,但它什么也没显示。我也尝试使用 ssh 访问它,但没有运气。我正在使用来自 Docker 索引的默认 ubuntu 映像。

4

2 回答 2

22

docker run ubuntu /sbin/init0.6.6 对我来说似乎完美无缺。您不会看到登录屏幕,因为 Docker 只管理该过程。相反,您可以使用docker ps -notrunc获取完整的 lxc 容器 ID,然后lxc-attach -n <container_id>在该容器中以 root 身份运行 bash。sshd 没有安装在容器中,所以你不能 ssh 到它。

于 2013-11-20T13:03:57.670 回答
1

您可以使用 ubuntu-upstart 映像:

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

尽管不幸的是,该解决方案已被弃用,但如果您现在需要一个像普通 Ubuntu 12.04、14.04 或 14.10(更改为 :14.04 位)系统一样“驱动”的完整操作系统容器,这已经足够了。如果未指定版本,则默认为 14.04。我没有大量使用它,并且在安装更复杂的软件包(例如 dbus!)时遇到了一些问题,但它可能对你有用。

唉,Ubuntu 在最近的版本中已切换到 systemd。谷歌搜索显示,似乎有正在进行的工作使 systemd 在不需要提升权限的情况下在 docker 容器中工作,但它似乎还没有为黄金时段做好准备。希望当 16.04 成为 LTS 时它会准备好。

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

于 2016-02-05T13:37:12.587 回答