記一次docker容器映射宿主機端口後沒法訪問的問題及處理過程linux
一、問題現象docker
docker 容器正確啓動後,查看宿主機端口已經監聽,能夠telnet通。可是本地curl127.0.0.1返回 curl: (56) Recv failure: Connection reset by peertomcat
docker啓動命令 docker run -d -p 8083:8080 --name=tomcat1 345867df0879網絡
宿主機:防火牆、selinux都已經關閉, ipv4轉發已經打開。curl
容器內:tomcat已經正常監聽8080端口,監聽地址爲0.0.0.0:8080,容許其餘機器訪問。且能夠正常訪問tomcatide
截圖以下:oop
二、處理過程url
嘗試更換docker版本1九、18都同樣,本機安裝的是20spa
搜索各類解決辦法,沒有相同狀況。最後找到一篇介紹刪除並從新添加docker0網橋,解決問題blog
(1)中止容器並中止docker服務
(2)重建docker0網橋
[root@localhost ~]# yum install bridge-utils -y
[root@localhost ~]# ip link set dev docker0 down
[root@localhost ~]# brctl delbr docker0
[root@localhost ~]# brctl addbr docker0
[root@localhost ~]# ip addr add 172.16.10.1/24 dev docker0
[root@localhost ~]# ip link set dev docker0 up
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:15:5d:f0:68:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.137.129/24 brd 192.168.137.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fef0:6800/64 scope link
valid_lft forever preferred_lft forever
16: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 3a:6d:40:45:b4:5a brd ff:ff:ff:ff:ff:ff
inet 172.16.10.1/24 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::386d:40ff:fe45:b45a/64 scope link
valid_lft forever preferred_lft forever
(3)從新啓動docker服務和容器。驗證能夠正常訪問。
結論:docker0網橋與宿主機網絡通訊問題,或者容器與docker0網橋通訊問題。具體緣由待進一步探究。