为什么在 Ubuntu 12.04 上使用 upstart 脚本启动时 docker 容器不启动?

jod*_*ody 15 ubuntu upstart lxc

使用运行 Ubuntu 12.04 和 Docker 0.8.1 的 Linode VPS 上的Docker 自动启动说明,指定的容器不会在重新启动时启动。

一旦启动,我就可以

~$ sudo start [service-name]
Run Code Online (Sandbox Code Playgroud)

一切都按计划进行,但我也希望容器在重新启动后重新启动。

教程中的脚本是否不是为处理重启而设计的?

/etc/default/docker 文件包含一行:

DOCKER_OPTS="-r=false"
Run Code Online (Sandbox Code Playgroud)

/etc/init/service-name.conf 直接来自 docker 页面:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script
Run Code Online (Sandbox Code Playgroud)

jod*_*ody 6

在过去几个月的某个时间点,教程中的 upstart 脚本被更改为删除循环以等待 docker 启动。我从我的新贵脚本中删除了循环,现在我的容器在重新启动后正确重新启动。

我的 /etc/init/service-name.conf 脚本现在看起来像这样:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script
Run Code Online (Sandbox Code Playgroud)

我不确定那个循环出了什么问题。也许它指向我系统上的错误文件,尽管我没有对默认的 docker 安装进行任何更改。现在,我很高兴修复涉及代码删除而不是一些复杂的解决方法。