Dockerコンテナの自動起動設定するオプション名と設定方法を紹介していきます。

概要

Dockerには、再起動ポリシーという「コンテナ終了時に再起動するための仕組み」があります。
再起動ポリシーを設定しておけば、Dockerデーモンの起動時やホストOSの起動時に自動的にコンテナを開始することができます。

目次へ戻る

docker-composeを利用している場合の自動起動

自動起動を有効化するには、以下のオプションを使います。

restart: always

自動起動を停止するには、「restart: always」を削除するだけでOKです。

指定例

version: '2'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3001:80"
    environment:
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: mysql_user
      WORDPRESS_DB_PASSWORD: mysql_pw
    # 自動起動の有効化
    restart: always

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root_pw
      MYSQL_DATABASE: wordpress
      MYSQL_USER: mysql_user
      MYSQL_PASSWORD: mysql_pw
    # 自動起動の有効化
    restart: always

指定例で使用しているdocker-compose.ymlは、以前作成した記事のものを利用しています。

目次へ戻る

Dockerコンテナ単体での自動起動

自動起動設定を変更するには、以下のオプションを使います。
◯有効化

--restart=always

◯無効化

--restart=no

docker updateコマンドを利用して、コンテナに「--restart=always」 or 「--restart=no」設定を付与します。
--restartオプションの後に、コンテナ名を指定します。

コマンド例

// 有効化
docker update --restart=always test_wordpress_1

// 無効化
docker update --restart=no test_wordpress_1

自動起動が有効になっているコンテナを検索する

以下のコマンドで自動起動が有効化になっているコンテナ一覧を取得することができます。

コマンド

docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

出力結果

以下のように、コンテナ名の一覧として出力されます。

/container-name-1 always
/container-name-2 always
/container-name-3 always

docker inspectコマンドでDockerコンテナの情報を取得します。
docker ps -aqコマンドで起動しているコンテナのIDを取得します。
RestartPolicyの出力結果をgrepコマンドで検索して、絞り込みます。

大量のコンテナがある環境下で、自動起動の設定状況を確認して、
どのコンテナの設定を変更すればよいかを瞬時に把握できます。

目次へ戻る

参考記事

○docker-composeを利用している場合の自動起動
https://docs.docker.com/compose/reference/restart/

○Dockerコンテナ単体の自動起動
https://docs.docker.com/config/containers/start-containers-automatically/

○自動起動が有効になっているコンテナを取得するコマンド
https://stackoverflow.com/questions/35126337/how-can-i-know-which-docker-will-restart-after-docker-daemon-restarts/35127744#35127744

目次へ戻る
この記事をシェアする:

この記事へのコメント:

    いろにゃ 2019-08-27 14:02:49  返信
    「自動起動が有効になっているコンテナを検索する」の「出力結果」は、grep で引っ掛けた結果をそのまま出力していますので、各行に "always" の文字列があるはずです。
      nagao
      長尾 寛治 2019-09-02 07:49:13  返信
      いろにゃ様
      コメントでのご指摘ありがとうございます。
      修正致しました。
東日本橋の制作・開発会社 プレスマンのスタッフブログ