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


15

Ubuntu 12.04およびDocker 0.8.1を実行しているLinode VPS でのDocker自動起動の手順を使用すると、指定されたコンテナーは再起動時に起動しません。

起動したら、次のことができます

~$ 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

2
upstartスクリプトの内容は何/etc/default/dockerですか?
ブルーノペレイラ

回答:


6

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


Dockerジョブを変更してシグナル(docker-started)を発行し、そのシグナルがコンテナージョブを開始するようにトリガーするようにした方が、より意欲的です。
MikeyB

commandを発行してこの方法でコンテナを停止することはできませんstop service-name。私はこの問題に直面しています:(
アーメド・アル・ハフード14

3

Dockerのubu​​ntu 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

1

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

これがあなたにも役立つことを願っています。


悲しいことに、これは私にはうまくいきませんでした。
ジョディ14

0
DOCKER_OPTS="-r=false"

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

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


2
正しいですが、ポイントは、ドッカーデーモンではなく、コンテナの再起動をハンドルすることです。Dockerデーモンが再起動時にコンテナを起動する場合、プロセスはupstartで管理できません。
ジョディ

0

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

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.