web-dev-qa-db-ja.com

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

実行したいDockerコンテナーがあるとします。次に呼び出すことができます

$ docker run ...

そしてすべてが大丈夫です。システムがクラッシュして再起動した場合に自動的に再起動されるようにコンテナを実行する組み込みの方法はありますか?

その場合、これはDocker Composeでも使用できますか?

41
Golo Roden

はい、dockerには、これを処理するdocker run --restart=alwaysなどの ポリシーの再起動 があります。これは compose.yml configファイル as restart: alwaysでも利用可能です。

53
Peter Lyons

ユーザーがログインを実行していなくてもコンテナを起動する場合(VirtualBox VMなど、起動するだけで毎回ログインしたくない)。 Ubuntu 16.04 LTSで実行した手順は次のとおりです。例として、Oracle dbコンテナーをインストールしました。

$ docker pull alexeiled/docker-Oracle-xe-11g
$ docker run -d --name=MYPROJECT_Oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-Oracle-xe-11g
$ vim /etc/systemd/system/docker-MYPROJECT-Oracle_db.service

次のコンテンツを追加します。

[Unit]
Description=Redis container
Requires=docker.service
After=docker.service

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

[Install]
WantedBy=default.target

起動時にサービスを有効にします

Sudo systemctl enable docker-MYPROJECT-Oracle_db.service

詳細情報 https://docs.docker.com/engine/admin/Host_integration/

65
kon

デフォルトの再起動ポリシーnoです。

作成されたコンテナの場合、docker updateを使用して再起動ポリシーを更新します。

docker update --restart=always 0576df221c0b

0576df221c0bはコンテナIDです。

31
Edward Young

ドキュメントからのより「穏やかな」モード:

docker run -dit --restart unless-stopped <image_name>
6
Rib47

Windowsでコンテナーの起動時に起動を実現したかった。

そのため、システムブート時に起動するスケジュールタスクを作成しました。このタスクは、単に「Docker for Windows.exe」(またはdocker実行可能ファイルの名前)を開始します。

その後、再起動ポリシーが「常に」のすべてのコンテナが起動します。

0
TostMaster

これがcrontabの目的です。

@reboot sleep 10 && docker start <container name> 2>&1 | /usr/bin/logger -t 'docker start'

crontab -eでユーザーcrontabにアクセスするか、crontab -lで表示するか、/etc/crontabでシステムcrontabを編集します

0
Sysinfo.io