システムの起動時にdockerコンテナを自動的に起動する良い方法は何ですか?
Ubuntu 14.04でこれを行う好ましい方法はありますか?
supervisord
過去にWebアプリの自動起動に使用しました。しかし、それはDockerにとって正しいことではありません。
システムの起動時にdockerコンテナを自動的に起動する良い方法は何ですか?
Ubuntu 14.04でこれを行う好ましい方法はありますか?
supervisord
過去にWebアプリの自動起動に使用しました。しかし、それはDockerにとって正しいことではありません。
回答:
どうやら、(Docker 1.2から)Dockerコンテナを自動起動する現在の方法は、再起動ポリシーを使用することです。これにより、Dockerが起動時にコンテナを起動し、終了時にコンテナを再起動する方法を制御します。これまで「常に」オプションを使用しましたが、システム起動時にDockerがコンテナーを自動起動することを確認できます。
sudo docker run --restart=always -d myimage
再起動ポリシーDocker実行で--restartフラグを使用すると、終了時にコンテナを再起動するかどうかの再起動ポリシーを指定できます。
no-終了時にコンテナを再起動しません。
on-failure-コンテナがゼロ以外の終了ステータスで終了した場合にのみコンテナを再起動します。
always-終了ステータスに関係なく、常にコンテナを再起動します。
on-failureポリシーを使用するときに、Dockerがコンテナの再起動を試行する最大回数を指定することもできます。デフォルトでは、Dockerはコンテナを再起動しようとします。
$ sudo docker run --restart=always redis
これにより、redisコンテナが常に再起動ポリシーで実行されるため、コンテナが終了するとDockerが再起動します。
$ sudo docker run --restart=on-failure:10 redis
これにより、on-failureの再起動ポリシーと10の最大再起動カウントでredisコンテナーが実行されます。redisコンテナーがゼロ以外の終了ステータスで10回以上連続して終了すると、Dockerはコンテナーの再起動の試行を中止します。最大再起動制限の提供は、障害時ポリシーに対してのみ有効です。
unless-stopped
が追加されました。それはのように動作しalways
ますが、コンテナが停止され、システムが再起動されるか、ドッキングウィンドウデーモンが再起動された場合は、コンテナが再起動しません。すべての4つのオプションのの素敵な書き込みアップはこちらを参照してくださいblog.codeship.com/...
docker
デーモンはこれをサポートするために自動起動する必要があります。
Dockerには、upstartとsystemdでそれを行う方法を説明するこのページがあります。Dockerにとって正しいこととは思えないことに同意します。彼らの解決策はdocker start
、コンテナをすでに作成していることを前提に実行することです。私はあなたがいずれかを実行したいと思うだろうdocker run --rm
、それは、デフォルトでは、あなたは他に何もしません場合は成り上がりのスクリプトで(画像からのブランドの新しいプロセスやコンテナのようにそれを処理する)、あるいは単にドッキングウィンドウデーモンは起動時に、容器自体を再起動してみましょう(と)。Upstartにはプロセスを簡単に開始/停止できるという利点がありますが、Dockerの開始/停止でもそれを実現できます!
upstartスクリプトが機能する前に、ユーザーにコンテナ(すべての正しいポート/ボリュームバインディングを含む)を手動で作成させることは、奇妙だと思います。
しかし、それはDockerにとって正しいこととは思えません。
何故なの?
私はこれにスーパーバイザーを使用して大成功を収めました。
知っていることを使用し、機能するものを使用し、簡単に保守および理解できるものを使用します。
--rm
か?
--rm
ここでなぜ関連するのか分かりません。
docker
の代替品であるlxc
か、openvz
持っているlxc.start.auto = 1
とvzctl set --onboot yes
。また、ESXiおよびその他の仮想化ソリューションには、このような機能が含まれています。Lawrenceのように、Dockerユーザーはすべてのプラットフォームで同じ知識で同じ問題を解決できるはずなので、このような自動起動機能をディストリビューション固有の方法で実装する必要はないと思います。