Ubuntu 12.04およびDocker 0.8.1を実行するLinode VPSで Docker auto-start の手順を使用すると、指定したコンテナーが再起動時に起動しません。
起動すると、次のことができます
~$ Sudo start [service-name]
そして、すべてが計画どおりに進みますが、再起動後にコンテナを再起動したいと思います。
チュートリアルのスクリプトは、再起動を処理するように設計されていませんか?
/ etc/default/dockerファイルには次の1行が含まれています。
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の起動を待機するループが削除されました。ループをupstartスクリプトから削除し、再起動後にコンテナーが正しく再起動するようになりました。
/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インストールには何の変更も加えていませんが、システム上の間違ったファイルを指している可能性があります。とりあえず、複雑な回避策ではなく、コードの削除に関する修正に満足しています。
Ubuntu 14.04 apt-getフレーバーのドッカーを使用している人のために。起動スクリプトを変更して、「docker」ではなく「docker.io」で待機するだけです。
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 13.10を使用していますが、同じ問題が発生しました。 dockerが/etc/init.d/docker
にdockerのrcスクリプトをインストールすると同時に、/ etc/init/docker.confにupstartスクリプトをインストールすることがわかりました。この問題を解消するには、rcスクリプト/etc/init.d/docker
を削除する必要がありました。
これがあなたにとってもうまくいくことを願っています。
/var/run/docker.sock
はソケットなので、存在をテストするときには-S
を使用する必要があります。
FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
inotifywait -t 2 -e create $(dirname $FILE)
done
DOCKER_OPTS="-r=false"
つまり、以前に実行したコンテナを再起動しないでください。
-r
オプションを削除するか、trueに変更します。