Я установил образ 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 (Final). Спасибо
Вы уверены, что сам tomcat прослушивает порт 8080? Поскольку контейнер докеров действительно прослушивает порт 32768, и этот порт открыт в брандмауэре (фактически полностью открыт, потому что политика ACCEPT и нет правила REJECT или DROP), похоже, что это может быть проблемой.
Вы можете проверить с помощью docker exec -ti pensive_leakey ss -tln