当前位置: 首页>>技术教程>>正文


为什么Docker容器在Ubuntu 12.04上没有启动脚本的情况下无法在启动时启动?

, ,

问题描述

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

一旦启动,我就能

~$ sudo start [service-name]

一切都按计划进行,但我也想让容器在重启后重启。

教程中的脚本是否不旨在处理重启?

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

DOCKER_OPTS="-r=false"

/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

最佳方案

在过去几个月的某个时候,本教程中的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

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

次佳方案

对于使用ubuntu 14.04 apt-get风格的docker的任何人。您只需要更改启动脚本即可等待”docker.io”,而不是”docker”,如下所示:

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9145.html,未经允许,请勿转载。