我安装了一个 tomcat 镜像并运行了一个容器:
[root@MY_IP ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e624bb55878f tomcat:7 "catalina.sh run" 43 minutes ago Up 43 minutes 0.0.0.0:32768->8080/tcp pensive_leakey
日志显示 tomcat 服务器正在运行,但是当我通过浏览器检查时,它告诉我:
This site can’t be reached : MY_IP:32768
MY_IP refused to connect.
ERR_CONNECTION_REFUSED
所以 MY_IP:32768 不起作用。我以为是防火墙问题,所以我检查了我的 iptables 并添加了一行:
[root@MY_IP ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6666
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:32768
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
当我使用 netstat 检查时,它看起来不错:
[root@MY_IP ~]# netstat -tulpn
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1375/mongod
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1240/mysqld
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1101/vsftpd
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 976/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1087/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1335/master
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 976/named
tcp 0 0 :::32768 :::* LISTEN 13085/docker-proxy
tcp 0 0 :::80 :::* LISTEN 1348/httpd
tcp 0 0 ::1:53 :::* LISTEN 976/named
tcp 0 0 :::22 :::* LISTEN 1087/sshd
tcp 0 0 ::1:953 :::* LISTEN 976/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 976/named
udp 0 0 ::1:53 :::* 976/named
但我仍然遇到同样的连接被拒绝问题。我确保重新启动了服务 iptables。
我做错了什么?我正在运行 CentOS 版本 6.7(最终版)。谢谢
答案1
您确定 tomcat 本身正在监听端口 8080 吗?由于 docker 容器确实在监听端口 32768,并且该端口在防火墙中已打开(实际上是完全打开的,因为策略是 ACCEPT,并且没有 REJECT 或 DROP 规则),因此似乎这可能是问题所在。
您可以使用以下方式验证
docker exec -ti pensive_leakey ss -tln