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 | デーモンが起動する際に直近コンテナが停止状態無い限り再起動します。 |
30代のWEB系企業エンジニアです。毎回同じようなことを検索してしまうので、自分の備忘録的に書いています。サイトのデザインはQiita(https://qiita.com)さんに寄せています。