- 環境
- Dockerコンテナの環境
- CentOS Linux release 7.6.1810 (Core)
- Eclipse2019-03
- java6
- Tomcat v6.0
事象:EclipseでTomcatを起動したらダイアログが表示されて怒られた
ダイアログのメッセージ
Port 8080 required by Tomcat v6.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).
原因:Tomcatがデフォルトで使うポートが既に使われているから
今回はDockerホストからつなぐDockerコンテナのポートで8080
を使っていた。
この時ss -t4
を実行するとサービス名はwebcash
だったので最初「?」となった。
CentOS7ではnetstatが非推奨だったのでssを使って使われているポート番号を調べる
CentOS 7 では ifconfig、route、arp、netstat が非推奨 - eTuts+ Server Tutorial
# CentOS7ではデフォルトでnetstatはない
$ netstat -n | grep 8080
bash: netstat: command not found
# だからssを使う
$ ss --version
ss utility, iproute2-ss170501
# 本当に使われているか確認する
$ ss -nt4 | grep 8080
ESTAB 0 0 172.19.0.2:8080 123.50.201.40:60003
# 誰が使っているか見てみる
$ cat /etc/services | grep 8080
webcache 8080/tcp http-alt
webcache 8080/udp http-alt
対応:Tomcatのポート番号を変える
- EclipseのServerビューでTomcatをダブルクリック
- Portsエリアにある「HTTP/1.1」のポート番号を使われていない番号に変える