かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Mac M2 java が常に 8888 ポートを専有してて困ってた

Docker を立ち上げようとしたら毎回 8888 ポート使われてると言われて困っていた

環境

現象
$ docker compose up
…
Error response from daemon: Ports are not available:
 exposing port TCP 0.0.0.0:8888 -> 0.0.0.0:0: listen tcp 0.0.0.0:8888: bind: address already in use

# port 8888 を使っているプロセスを探す
$ lsof -i -P | grep 8888
java   83356 kikiki   49u  IPv6 0x1234567890123456      0t0  TCP *:8888 (LISTEN)
# java のプロセス (83356) を落とす
kill -9 83356

毎回 java が 8888 ポートを使っていてめちゃくちゃ邪魔だった…
なにかインストールした記憶がなかったので、再起動したら治るかと思ったけどそうでもなかった…

毎回 java を kill するのが面倒すぎて原因を調査したメモ

結論 VS CodeW3C Validation エクステンション が原因っだった

何かしらレコメンドで出てきてインストールしてたっぽい。
このエクステンションが原因で VS Code 起動時に常時 java が 8888 ポートで通信を行うようになってた。
一度 uninstall するか disabled すれば再度有効にしても java が 8888 ポートを専有してしまう問題が解決できた。特に必要なさそうだったので一旦 uninstall してしまった


調査方法

  1. アクティビティモニターを起動
  2. ネットワークタブを選択
  3. java で検索
  4. プロセスをクリックして詳細を表示
  5. 詳細の開いているファイルとポートタブを選択
  6. ログからどのアプリがこのプロセスを実行しているのかを探す

java が 8888 ポートを使っているのは VS Code の extention が原因だった

今回はこのような感じになっており umoxfo.vscode-w3cvalidation-2.9.1 で検索して VS CodeVS Code W3C Validation extention が原因だったことを突き止められました。

プラグインの説明に常時ネット経由で確認するとかは書かれておらず、拡張を disabled にしたら再度有効にしても同じ現象は発生しなかったので、拡張インストール時に java のインストールも求められそれが何らかの理由で暴走しているような状態だったのかもしれません。

おわり


[参考]

port = 港 …