2026年7月11日
2026年7月11日
DockerfileのHEALTHCHECKで起動確認を行う方法
はじめに
Dockerコンテナは、アプリケーションのデプロイと運用において非常に便利なツールですが、サービスが停止したり不具合が出ているのに気づくのが遅くなることがあります。そこでHEALTHCHECKディレクティブを使用して、定期的にコンテナの起動状況を確認し、問題があれば即座に対処する方法について解説します。
症状・背景
- 起動後すぐに問題が発生しても、サービスが停止しない場合
- アプリケーションの応答性が低下したときにそれを感知できない場合
- 定期的な健康診断により安定稼働を維持したい場合
手順・設定方法
ステップ1: HEALTHCHECKディレクティブを使用するDockerfileを作成
# DockerfileでHEALTHCHECKを設定
FROM nginx:latest
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -f http://localhost/ || exit 1
# コンテナ起動時にnginxサービスを開始
CMD ["nginx", "-g", "daemon off;"]
ステップ2: HEALTHCHECKのオプションを設定
# インターバルとタイムアウトを指定
HEALTHCHECK --interval=30s --timeout=5s
# 何回失敗してもコンテナは停止しないようにする(デフォルト)
--retries=3
# curlコマンドを使用してnginxのウェルカムページを確認
CMD curl -f http://localhost/ || exit 1
ステップ3: コンテナ内から HEALTHCHECK の実行方法
# コンテナ内でHEALTHCHECKを実行
docker run --name my-nginx -d nginx:latest
docker inspect --format='{{json .State.Health }}' my-nginx
ステップ4: トラブルシュートと監視
# ヘALTHCHECKが失敗した場合の対処法
docker logs my-nginx
注意事項
- HEALTHCHECKが頻繁に失敗すると、コンテナの自動停止や再起動が発生するので注意。
- HEALTHCHECKコマンドは、コンテナ内から実行できるようにする。必要ならネットワークアクセスも考慮すること。
- HEALTHCHECKはデフォルトで無効なので、明示的に設定する必要がある。
まとめ
1. 定期的な健康診断の重要性: Dockerコンテナ内でサービスの正常性を監視することで、問題が早期に発見・解決できます。
2. HEALTHCHECKディレクティブの活用: DockerfileでHEALTHCHECKを使用して定期的にコンテナのステータスを確認し、問題があれば即座に対応します。
3. 適切な HEALTHCHECK コマンドの設定: 起動後直ちにチェックが通るよう、適切なコマンドを選択することが重要です。
4. 監視とログ解析: HEALTCHCKが失敗した場合の対処法を理解し、ログを活用して問題を特定します。
5. デフォルト設定の変更: HEALTHCHECKはデフォルトで無効なため、コンテナ化するアプリケーションに合わせて適切な設定を行いましょう。
関連記事: