根据这个 github 问题,应该可以使用 Upstart、cron 等使用 Docker 0.6 或更高版本启动一个完整的容器,但我该怎么做呢?
我期待着
docker run -t -i ubuntu /sbin/init
会像
lxc-start -n ubuntu /sbin/init
我会得到一个登录屏幕,但它什么也没显示。我也尝试使用 ssh 访问它,但没有运气。我正在使用来自 Docker 索引的默认 ubuntu 映像。
根据这个 github 问题,应该可以使用 Upstart、cron 等使用 Docker 0.6 或更高版本启动一个完整的容器,但我该怎么做呢?
我期待着
docker run -t -i ubuntu /sbin/init
会像
lxc-start -n ubuntu /sbin/init
我会得到一个登录屏幕,但它什么也没显示。我也尝试使用 ssh 访问它,但没有运气。我正在使用来自 Docker 索引的默认 ubuntu 映像。
docker run ubuntu /sbin/init
0.6.6 对我来说似乎完美无缺。您不会看到登录屏幕,因为 Docker 只管理该过程。相反,您可以使用docker ps -notrunc
获取完整的 lxc 容器 ID,然后lxc-attach -n <container_id>
在该容器中以 root 身份运行 bash。sshd 没有安装在容器中,所以你不能 ssh 到它。
您可以使用 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,但它有自己的方法来启动服务。似乎更适合最小的多进程容器。