Dockerコンテナの自動起動設定

プログラミング

Dockerコンテナの自動起動設定の方法を記載します。自動起動の方法はdockerコンテナ単体起動の場合とdocker-composeを使ったコンテナの起動の2つを紹介します。

Dockerコンテナ単体の自動起動設定

dockerは以下で構築したものです。

こちらをvagrant reloadでOSを再起動した後に自動でコンテナが立ち上がるようにします。

# コンテナ作成時に「--restart=always」オプションをつけることで自動起動になる
$ docker run -d -p 4001:80 --restart=always --name php7-apache php7-apache:latest

# 起動したコンテナの確認
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED              STATUS              PORTS                      NAMES
36683d2f9a54        php7-apache:latest   "/usr/sbin/httpd -DF…"   About a minute ago   Up 59 seconds       0.0.0.0:4001->80/tcp       php7-apache

コンテナの起動が完了したらコマンドプロンプトでvagrantを再起動します。

# コマンドプロンプトでvagrantを再起動
vagrat reload

vagrant(OS)を再起動したら自動でコンテナが立ち上がっていることを確認します。

# 再起動後にコンテナの確認
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                      NAMES
36683d2f9a54        php7-apache:latest   "/usr/sbin/httpd -DF…"   6 minutes ago       Up 18 seconds       0.0.0.0:4001->80/tcp       php7-apache

docker-composeコンテナの自動起動設定

以下のdocker-composeで立ち上げたコンテナで設定します。

こちらをvagrant reloadでOSを再起動した後に自動でコンテナが立ち上がるようにします。

version: '3'

services:
  mongo-express:
    image: mongo-express
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_BASICAUTH_USERNAME: mongoexpress
      ME_CONFIG_BASICAUTH_PASSWORD: mongoexpress
      ME_CONFIG_MONGODB_PORT: 27017
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: mongo
    links:
      - mongo
    networks:
      - mongo-compose-network
    # 自動起動の有効化
    restart: always

  mongo:
    image: mongo
    environment:      MONGO_INITDB_ROOT_USERNAME: root      MONGO_INITDB_ROOT_PASSWORD: mongo
    ports:      - "27017:27017"
    volumes:      - /home/renatogroffe/Desenvolvimento/Docker/Volumes/MongoDB:/data/db
    networks:      - mongo-compose-network
    # 自動起動の有効化
    restart: always

networks:
    mongo-compose-network:      driver: bridge

19行目と28行目の「restart: always」の記述によりコンテナが自動起動するようになります。

# docker-compseでコンテナを起動します
$ ls
docker-compose.yml
$ docker-compose up -d   
Starting mongo_mongo_1 ... done                                                                                                                                                      
Starting mongo_mongo-express_1 ... done   

# 起動したコンテナの確認
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                      NAMES
f00a3083baa6        mongo-express        "tini -- /docker-ent…"   38 minutes ago      Up About a minute   0.0.0.0:8081->8081/tcp     mongo_mongo-express_1
c9b870ca710f        mongo                "docker-entrypoint.s…"   38 minutes ago      Up About a minute   0.0.0.0:27017->27017/tcp   mongo_mongo_1

コンテナの起動が完了したらコマンドプロンプトでvagrantを再起動します。

# コマンドプロンプトでvagrantを再起動
vagrat reload

vagrant(OS)を再起動したら自動でコンテナが立ち上がっていることを確認します。

# 再起動後にコンテナの確認
$ docker ps
f00a3083baa6        mongo-express        "tini -- /docker-ent…"   41 minutes ago      Up 40 seconds       0.0.0.0:8081->8081/tcp     mongo_mongo-express_1
c9b870ca710f        mongo                "docker-entrypoint.s…"   41 minutes ago      Up 40 seconds       0.0.0.0:27017->27017/tcp   mongo_mongo_1

正常に2つのコンテナが自動起動されています。

Dockerの再起動オプション

今回は再起動オプションを「always」としましたが、再起動オプションは他にもあります。

always常に再起動する
no再起動しない オプション未指定の場合はこれがデフォルト
on-failure[:max-retries]コンテナが異常終了した場合に再起動をします。再起動のリトライ回数を設定できます。
unless-stoppedデーモンが起動する際に直近コンテナが停止状態無い限り再起動します。
pocketcode

30代のWEB系企業エンジニアです。毎回同じようなことを検索してしまうので、自分の備忘録的に書いています。サイトのデザインはQiita(https://qiita.com)さんに寄せています。