docker 端口被占用問題解決


啟動容器A, A的端口映射是 80:8080

 

外部的25000端口映射到服務內部的8080端口;有時候將容器關閉,重新構建鏡像及啟動容器時會出現一些報錯,

比如端口被占用的報錯,但通過docker ps -a |grep 容器名, 會發現容器其實已經關閉,但仍然無法啟動新的容器

這里通過iptables 關閉docker映射到host上的端口

主機與docker中的端口轉發是通過主機的iptables實現的

iptables -t nat -nL --line-number |grep 80 , 列出nat表所有鏈的所有規則,

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination 
MASQUERADE  tcp  --  172.17.0.9           172.17.0.9           tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination   
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.17.0.2:8080
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.17.0.9:8080

這里說明外部的80端口映射給了兩個容器的IP, 172.17.0.2 172.17.09 , 需要手工將之前的映射規則刪除掉
解決辦法:
iptables -t nat -D DOCKER 2 刪除chain docker中的第二條規則


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM