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は、以前作成した記事のものを利用しています。
- [WordPress]超簡単!DockerでWordPressを1分で立ち上げよう[WP10]
https://www.pressmantech.com/tech/4873
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