日々の備忘録

技術について日々学んだことを書きます。

Hyper-Vのポート予約について

はじめに

Hyper-Vの使用方法とは関係ありません。Dockerを使用している最中に気づいた件です。

Hyper-Vがポート予約をしていることを今回初めて知りました。

Dockerで特定ポートを使用できない

ローカル環境のhttpサーバに8080を使うことはよくあると思いますが、以下のエラーで使用できないと出ていました。

Error response from daemon: Ports are not available: listen tcp 0.0.0.0:8080: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

他の用途で8080を使用している記憶はなかったのでいろいろ調べたところ、以下のリンクが見つかりました。

Desktop 3.0.0: listen tcp: bind: An attempt was made to access a socket in a way forbidden by its access permissions. · Issue #10008 · docker/for-win · GitHub

sql server - Docker SQL bind: An attempt was made to access a socket in a way forbidden by its access permissions - Stack Overflow

どうやらHyper-Vによってかなりの範囲が予約されているようだったので、stackoverflowに提示されている方法で調整したところ、無事8080ポートが使用できるようになりました。

Docker DesktopはWSL2 Backendで使用しており、Hyper-Vを久しく使っていないので無効化しておくとこういったことがなくなるかもしれませんが、いわゆる仮想マシンが欲しくなったときに不便なので悩ましいところです。