こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴8年)で、資格は13個保有しています。
結論、DockerコンテナのUnhealthyを解消する方法は主に二つです。
- Dockerコンテナをrestart(再起動)する。
- メモリ不足の可能性があるので、メモリ割り当てを増やす。
ちなみに、僕がエラーに遭遇した時はメモリ不足でした…
⇨ WSL2でDockerを起動していたんですが、WSL2のメモリ割り当てが少なかったようです。
本記事を読めば、DockerコンテナがUnhealthyになる原因と解消方法について理解できるので早速見ていきましょう!
サクッと読み終わるので、ぜひ最後まで読んでくださいね♪
DockerコンテナがUnhealthyになる原因
DockerコンテナがUnhealthyになる原因は主に二つです。
- Dockerコンテナが何かしらの理由で停止している。
- メモリが不足している。
1. Dockerコンテナが何かしらの理由で停止している
Dockerコンテナが何かしらの理由で停止している可能性があります。
原因は様々ですが、唐突にコンテナが落ちることもあります。
まずは現状をしっかりと把握しましょう。
2. メモリが不足している
メモリ割り当てが不足している可能性があります。
メモリが不足している場合、コンテナを再起動しても改善されないことが多いです。
DockerコンテナのUnhealthyを解消する方法
DockerコンテナのUnhealthyを解消する方法は以下の通りです。
- Dockerコンテナをrestart(再起動)する。
- メモリ割り当てを増やす。
1. Dockerコンテナをrestart(再起動)する
まずはDockerコンテナを再起動してみましょう。
$ docker restart コンテナ名
↑のコマンドを実行してDockerコンテナを再起動します。
$ docker ps
Dockerコンテナのステータスを確認し、ステータスがUnhealthyからhealthyに変わっていればOKです。
ただし、healthyに変わった直後にUnhealthyに変わることもあります。
その場合はメモリの枯渇を疑いましょう。
2. メモリ割り当てを増やす
再起動してもUnhealthyが解消されない場合はメモリが枯渇している可能性が高いです。
DockerをWSL2(LinuxOS)で起動したりするとメモリ枯渇でコンテナが死ぬことがあります。
WSL2については「WSL2(Ubuntu)にDockerをインストールする方法!」で詳しく解説しています。
WSL2の場合
WSL2の場合は設定ファイルを設置するだけでOKです。
[wsl2]
memory=2GB
swap=8GB
.wslconfigファイルを新規作成します。
C:\Users\<ユーザ名>\に.wslconfigを配置します。
WSL2を再起動すればOKです。
念のため、PC自体の再起動も行いましょう。
Dockerコンテナを再起動してhealthyになればOKです。
よくある質問
- DockerコンテナがUnhealthyになる原因は何ですか?
-
主に以下の二つです。
- Dockerコンテナが何かしらの理由で停止している。
- メモリが不足している。
- DockerコンテナのUnhealthyを解消する方法は何ですか?
-
主に以下の二つです。
- Dockerコンテナをrestart(再起動)する。
- メモリ割り当てを増やす。
まとめ
今回は、DockerコンテナがUnhealthyになる原因と解消方法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Dockerの勉強なら「Docker/Kubernetes 実践コンテナ開発入門
最後までお読みいただき、ありがとうございました!
- クソおすすめ本
海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。