Iptables

Docker - 無法訪問此站點

  • April 15, 2016

我安裝了一個 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 並添加了一個 ligne:

[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(最終版)。謝謝

你確定tomcat本身正在監聽8080埠嗎?因為 docker 容器確實在偵聽埠 32768 並且該埠在防火牆中打開(實際上完全打開,因為策略是 ACCEPT 並且沒有 REJECT 或 DROP 規則),看來這可能是問題所在。

你可以驗證 docker exec -ti pensive_leakey ss -tln

引用自:https://serverfault.com/questions/770560