问题描述
使用针对在运行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