デプロイ用の dockerfile と docker-compose.yml を含むプロジェクトがあります。しかし、 を実行するとdocker-compose up
、コマンドが出力されBuilding app
、永久にハングします。実行されている手順は表示されません。ネットワーク トラフィックがないため、イメージもダウンロードされず、使用されているイメージはキャッシュで使用できます。
自分のマシンでこの問題をデバッグして修正するにはどうすればいいでしょうか? docker(-compose) に使用できる詳細オプションはありますか?
ベストアンサー1
要約
Docker Compose が予期せずハングした場合:
- 使用していることを確認してくださいDocker Compose v2。
- システムのエントロピーが
apt install haveged
低いかどうかを確認します。 - クラウド/仮想化ハードウェアではエントロピーが低くなることが予想されます。
更新(2023年2月)
Docker Compose v2 は Go で書き直されました。
過去 12 か月以内にハングが発生したという報告はまだありますが、それらの報告が Compose v1 または v2 を実行しているユーザーからのものであるかどうかは確認できません。
私の理解では、Compose v1 は、初期化にエントロピーを必要とするコア依存関係のためにすべてのコマンドでハングし、実行さえ--help
も妨げます。--version
これと対照的に、v2ではランダム性は次のような場合にのみ使用されるようです。コンテナ名の生成。
Docker 自体はランダム性をより多く使用するため、この時点では Compose よりもハングする可能性が高いと考えられます。
したがって、haveged
仮想化ハードウェア上で実行している場合や、以下に説明するようにエントロピー関連のハングが発生している場合は、引き続き役立ちますが、2023 年にこれを経験している場合は、Compose v2 を使用していることを確認してください。
ご了承くださいDocker Compose v1 は 2023 年 7 月をもってサポート終了となりますまた、2021 年 5 月以降はセキュリティ アップデートも受信されていないため、今すぐ移行を開始してください。
オリジナル(2021年6月):
これは「docker-compose がハングする」の一番上のヒットなので、私の問題に対する解決策を投稿します。これで 30 分の検索時間を節約できます。docker-compose --version
ハングする場合でも、これが解決策になるかもしれません。
システムのエントロピーが低い場合、Docker-compose は無期限にハングするようです。次のコマンドを実行して確認できます。
cat /proc/sys/kernel/random/entropy_avail
出力が 1000 未満の場合、それがハングアップの原因であることはほぼ間違いありません。私は、利用可能なエントロピーが 10 未満の VPS でこれを経験しました。
私の場合の修正方法は をインストールすることでしたhaveged
。これにより、利用可能なエントロピーがすぐに 2500 以上に増加し、docker compose が正常に動作するようになりました。
またはディストリビューションの同等のものを実行するだけで準備apt install haveged
完了です。