web-dev-qa-db-ja.com

Ubuntu 12.04のupstartスクリプトで起動時にdockerコンテナーが起動しないのはなぜですか?

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
15
jody

過去数か月のある時点で、チュートリアルの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インストールには何の変更も加えていませんが、システム上の間違ったファイルを指している可能性があります。とりあえず、複雑な回避策ではなく、コードの削除に関する修正に満足しています。

6
jody

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
3
falcon006

ホストとしてUbuntu 13.10を使用していますが、同じ問題が発生しました。 dockerが/etc/init.d/dockerにdockerのrcスクリプトをインストールすると同時に、/ etc/init/docker.confにupstartスクリプトをインストールすることがわかりました。この問題を解消するには、rcスクリプト/etc/init.d/dockerを削除する必要がありました。

これがあなたにとってもうまくいくことを願っています。

1
Sameer Naik

/var/run/docker.sockはソケットなので、存在をテストするときには-Sを使用する必要があります。

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
0
j.szwedko
DOCKER_OPTS="-r=false"

つまり、以前に実行したコンテナを再起動しないでください。

-rオプションを削除するか、trueに変更します。

0
MikeyB