2026年5月31日
2026年5月31日
Dockerコンテナのヘルスチェックを設定する方法
はじめに
Dockerコンテナは迅速かつ効率的にデプロイされる一方で、その健康状態を適切に監視することが重要です。ヘルスチェック機能を使用することで、コンテナが正常に動作していることを確認し、不具合が発生した場合に自動的に再起動することができます。
症状・背景
- コンテナが意図しない状態になる(例えば、応答なしやエラー出力がある)
- サービスのダウンタイムを最小限に抑えるために自動再起動が必要
- パフォーマンスの問題を早期発見し、迅速に対応するため
手順・設定方法
ステップ1: Dockerfileにヘルスチェックを追加する
# Dockerfile内でHEALTHCHECK指令を使用してヘルスチェックを設定します。
FROM nginx:latest
HEALTHCHECK --interval=30s --timeout=5s \
CMD curl -f http://localhost/ || exit 1
CMD ["nginx", "-g", "daemon off;"]
ステップ2: Docker Composeでヘルスチェックを設定する
# docker-compose.ymlファイル内でサービスの HEALTHCHECK指令を使用します。
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 5s
retries: 3
ステップ3: Docker CLIでヘルスチェックを設定する
# コンテナ作成時に HEALTHCHECK指令を使用します。
docker run -d --name my-nginx \
--health-cmd="curl -f http://localhost/ || exit 1" \
--health-interval=30s \
--health-timeout=5s \
--health-retries=3 \
nginx:latest
ステップ4: 実践/トラブルシュート/監視
# コンテナのヘルスチェック結果を確認します。
docker inspect -f '{{range .State.Health}}{{.Status}}: {{.Detail}}{{end}}' my-nginx
# ヘルスチェックに問題がある場合、以下のように再起動されます。
docker restart my-nginx
注意事項
- ヘルスチェックの頻度やタイムアウトは適切な値に調整してください。頻度が高すぎると負荷が増える可能性があります。
- 設定したヘルスチェックがコンテナの実際の健康状態と一致していることを確認します。
- 定期的にヘルスチェック関連の設定を検討し、必要に応じて変更することをお勧めします。
まとめ
1. Dockerfileやdocker-compose.ymlでのヘルスチェック設定: Dockerコンテナ内で動作するサービスによっては、Dockerfileやコンポーズファイルでヘルスチェックを設定できます。
2. 実行中のコンテナへのヘルスチェック適用: docker runコマンドを利用してヘルスチェック指令を追加することで、既存のコンテナでも設定することができます。
3. ヘルスチェック結果の確認と管理: コンテナの健康状態を定期的に確認し、適切な管理を行うことが重要です。問題が発生した場合に自動再起動するための設定は、サービスの可用性向上に貢献します。
関連記事: