システムの再起動時にdockerコンテナを自動起動するにはどうすればよいですか?


46

私はDockerコンテナでWordPressサイトをホストしており、これらのコンテナは常にブート時に起動するようにしたいので、手動で行う必要があります。


どのUbuntuバージョンを使用しますか?
Maythux

ubuntuサーバー14.04を使用
nayan tiwari


クロスポスト。投稿するサイトを1つだけ選択してください。
トーマス・ウォード

回答:


34

今まで、私はそれを普通に行う方法があるとは思わない。トリッキーな解決策は、再起動ポリシーを使用することです

sudo docker run --restart=always -d your_image

これは、シャットダウンするたびにコンテナが終了するため、ホストを起動するとドッカーが再起動されることを意味します。


私はそれについて検索などがシェフのようないくつかの自動化ツールがありますが、それらを使用する方法を知ってはいけない
nayan Tiwariさん


2
これにシステムの可能性を使用しないのはなぜですか?upstartとsystemdの両方がこれに完全に対処できます
-Reishin

29

既存のコンテナに再起動ポリシーを追加することは非常に一般的な使用例です。

これは、次のコマンドで実行できます。 docker update --restart {no,on-failure,unless-stopped,always} container_name

詳細:Docker-コンテナーを自動的に開始する


2
これで問題が完全に解決しました!データベースの入ったコンテナがあり、Macの起動時に起動したかったのです。(停止しない限り)そのイメージが常に再起動されるように指定することで、これはうまくいきました!
コリン

21

ubuntu 15はsystemdをサポートするようになったため、このマネージャーのサンプル:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

Dockerサイトでさらに入手可能

PSかなりかわいい設定:)


4

私がしたことは、Upstartファイルを使用することです。

Docker Webサイトでいくつかの例やその他のソリューションを見つけることができます。

/ etc / initにそのようなファイルを作成します。

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

Docker 1.2からは、再起動ポリシーがあります。これは、Docker サービスの実行時(たとえば、起動後)にコンテナを自動的に再起動するのにも役立ちます。

個人的に、私はpuppetを使用してワークステーションをプロビジョニングし、このDockerモジュールを使用して、より完全な起動スクリプトを自動的に作成します(起動、停止、再起動、クリーンオプション...)


1
新興企業は死んでいます。systemdを使用します。
-AmirHossein
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.