最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker容器網(wǎng)絡(luò)不通排查指南

 更新時間:2026年02月11日 09:03:18   作者:花寶寶hua  
本文主要介紹了Docker容器網(wǎng)絡(luò)不通排查指南,包括容器無法訪問外網(wǎng)、容器間網(wǎng)絡(luò)不通、端口映射不生效、DNS解析失敗以及跨主機容器通信等常見問題的診斷方法,感興趣的可以了解一下

前言

容器跑起來了,但是網(wǎng)絡(luò)不通——ping不通外網(wǎng)、容器間互相訪問不了、端口映射不生效…

這類問題排查比較麻煩,涉及容器網(wǎng)絡(luò)、宿主機網(wǎng)絡(luò)、iptables規(guī)則等多個層面。這篇整理一套系統(tǒng)的排查流程,覆蓋常見的網(wǎng)絡(luò)問題場景。

一、容器訪問不了外網(wǎng)

癥狀:

docker exec -it myapp ping 8.8.8.8
# 卡住或者 Network is unreachable

第一反應(yīng):檢查宿主機的IP轉(zhuǎn)發(fā)有沒有開。

cat /proc/sys/net/ipv4/ip_forward

如果是0,容器的包出不去。開一下:

echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效要寫到sysctl.conf

還是不通?看下iptables的NAT規(guī)則:

iptables -t nat -L -n | grep MASQUERADE

應(yīng)該有條類似這樣的規(guī)則:

MASQUERADE  all  --  172.17.0.0/16   0.0.0.0/0

沒有的話Docker的NAT可能被清掉了,重啟Docker一般能恢復(fù):

systemctl restart docker

還有一個大坑:firewalld。CentOS默認(rèn)開著,它和Docker的iptables規(guī)則會打架。

# 先關(guān)了試試
systemctl stop firewalld

如果關(guān)了就好了,說明是防火墻的問題。正式解決要配置firewalld的docker zone,或者干脆用iptables。

二、容器間網(wǎng)絡(luò)不通

在同一臺機器上,兩個容器互相訪問不了。

先確認(rèn)它們在不在同一個網(wǎng)絡(luò):

docker inspect 容器A --format '{{.NetworkSettings.Networks}}'
docker inspect 容器B --format '{{.NetworkSettings.Networks}}'

如果都在默認(rèn)的bridge網(wǎng)絡(luò),有個坑:默認(rèn)bridge不支持通過容器名訪問。

docker exec 容器A ping 容器B
# ping: 容器B: Name or service not known

只能用IP:

# 先拿到IP
docker inspect 容器B --format '{{.NetworkSettings.IPAddress}}'
# 172.17.0.3

docker exec 容器A ping 172.17.0.3
# 這樣就通了

嫌麻煩的話,用自定義網(wǎng)絡(luò):

docker network create mynet
docker network connect mynet 容器A
docker network connect mynet 容器B

# 現(xiàn)在可以用名字了
docker exec 容器A ping 容器B

自定義網(wǎng)絡(luò)有內(nèi)置DNS,會自動解析容器名。

三、端口映射不生效

docker run -p 8080:80 nginx
curl http://localhost:8080
# 不通

先確認(rèn)服務(wù)在容器里跑起來沒:

docker exec 容器 curl localhost:80

如果容器里能訪問說明服務(wù)沒問題,那問題在外面。

檢查點:

1、服務(wù)監(jiān)聽的地址對不對:

docker exec 容器 netstat -tlnp

如果顯示127.0.0.1:80,那外面肯定訪問不了,要改成0.0.0.0:80。

2、宿主機端口有沒有被占:

netstat -tlnp | grep 8080

3、防火墻/安全組:

# 本地防火墻
firewall-cmd --list-ports

# 云服務(wù)器別忘了安全組

云服務(wù)器安全組沒開端口是個常見的坑。

四、DNS解析失敗

能ping通IP,但ping域名不行:

docker exec 容器 ping 8.8.8.8  # 通
docker exec 容器 ping baidu.com  # 不通

看下容器的DNS配置:

docker exec 容器 cat /etc/resolv.conf

如果DNS服務(wù)器不可達(dá),最簡單的辦法是啟動時指定:

docker run --dns 8.8.8.8 nginx

或者全局配置,改 /etc/docker/daemon.json

{
  "dns": ["8.8.8.8", "114.114.114.114"]
}

五、跨主機容器通信

這個稍微復(fù)雜點。兩臺機器上的容器默認(rèn)是不通的,因為各自的bridge網(wǎng)絡(luò)是隔離的。

最簡單的方案:用端口映射,通過宿主機IP訪問。

# 機器B上
docker run -p 8080:80 nginx

# 機器A上訪問
curl http://機器B的IP:8080

想讓容器直接互通的話,要用overlay網(wǎng)絡(luò)或者第三方方案(Flannel、Calico這些)。

還有個偏門辦法:如果兩臺主機已經(jīng)通過WireGuard或者其他組網(wǎng)工具連在一起了,可以配靜態(tài)路由讓容器網(wǎng)段互通。不過這個配置比較麻煩,一般不推薦。

六、一鍵診斷腳本

懶得一個個查,寫了個腳本:

#!/bin/bash
# 用法: ./check.sh 容器名

C=$1
echo "=== 檢查 $C ==="

echo -e "\n[網(wǎng)絡(luò)模式]"
docker inspect $C --format '{{.HostConfig.NetworkMode}}'

echo -e "\n[IP地址]"
docker inspect $C --format '{{.NetworkSettings.IPAddress}}'

echo -e "\n[路由]"
docker exec $C ip route 2>/dev/null || echo "無ip命令"

echo -e "\n[DNS]"
docker exec $C cat /etc/resolv.conf 2>/dev/null

echo -e "\n[外網(wǎng)連通性]"
docker exec $C ping -c 1 -W 2 8.8.8.8 2>/dev/null && echo "OK" || echo "不通"

echo -e "\n[宿主機IP轉(zhuǎn)發(fā)]"
cat /proc/sys/net/ipv4/ip_forward

跑一下基本能看出問題在哪。

總結(jié)

Docker網(wǎng)絡(luò)問題90%出在這幾個地方:

問題原因解決
容器出不了外網(wǎng)ip_forward沒開echo 1 > /proc/sys/net/ipv4/ip_forward
容器出不了外網(wǎng)防火墻攔截檢查firewalld/iptables
容器間不通不在同一網(wǎng)絡(luò)使用自定義網(wǎng)絡(luò)
端口映射失敗服務(wù)監(jiān)聽127.0.0.1改成監(jiān)聽0.0.0.0
DNS解析失敗DNS服務(wù)器不可達(dá)指定DNS服務(wù)器

排查順序:網(wǎng)絡(luò)配置IP轉(zhuǎn)發(fā)防火墻規(guī)則服務(wù)監(jiān)聽地址DNS配置

到此這篇關(guān)于Docker容器網(wǎng)絡(luò)不通排查指南的文章就介紹到這了,更多相關(guān)Docker 網(wǎng)絡(luò)不通排查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows安裝Docker全過程

    Windows安裝Docker全過程

    這篇文章主要介紹了Windows安裝Docker全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker Compose安裝本地maven方式

    Docker Compose安裝本地maven方式

    本文介紹了如何使用Docker Compose安裝Maven,并提供了腳本和配置路徑,通過運行Docker Compose,可以查看安裝結(jié)果,進(jìn)入容器后,可以查看Maven版本
    2024-12-12
  • 如何使用Docker部署Xxl-Job分布式任務(wù)調(diào)度中心

    如何使用Docker部署Xxl-Job分布式任務(wù)調(diào)度中心

    XXL-Job是一個開源的分布式任務(wù)調(diào)度中心,它提供了一個可視化的任務(wù)管理界面,可以方便地創(chuàng)建、編輯和監(jiān)控任務(wù),本文詳細(xì)的講解了如何使用Docker部署xxl-job分布式任務(wù)調(diào)度服務(wù),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • windows使用docker部署gitlab方式

    windows使用docker部署gitlab方式

    這篇文章主要介紹了windows使用docker部署gitlab方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker部署Jenkins持續(xù)集成(CI)工具的實現(xiàn)

    Docker部署Jenkins持續(xù)集成(CI)工具的實現(xiàn)

    Jenkins 是一個流行的開源自動化工具,廣泛應(yīng)用于持續(xù)集成(CI)和持續(xù)交付(CD)的環(huán)境中,本文介紹了使用Docker部署Jenkins,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • docker中鏡像映射和端口映射的實現(xiàn)步驟

    docker中鏡像映射和端口映射的實現(xiàn)步驟

    本文介紹了在Docker中進(jìn)行鏡像映射和端口映射,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • docker之創(chuàng)建MariaDB鏡像的方法

    docker之創(chuàng)建MariaDB鏡像的方法

    這篇文章主要介紹了docker之創(chuàng)建MariaDB鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • docker安裝、調(diào)試qsign簽名服務(wù)器的解決方案

    docker安裝、調(diào)試qsign簽名服務(wù)器的解決方案

    這篇文章主要介紹了docker安裝、調(diào)試qsign簽名服務(wù)器的解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-04-04
  • docker image刪不掉的解決辦法

    docker image刪不掉的解決辦法

    在使用Docker的時候遇到刪不掉image的情況,怎么回事,如何解決呢?下面小編給大家分享下docker image刪不掉的解決辦法,需要的朋友參考下吧
    2017-01-01
  • 使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    這篇文章主要介紹了使用Docker部署Nginx+Flask+Mongo的應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論

同德县| 太白县| 齐齐哈尔市| 罗江县| 黎城县| 上虞市| 湖口县| 沙洋县| 大渡口区| 海晏县| 峨山| 蒙城县| 民县| 虞城县| 宜良县| 镶黄旗| 县级市| 娄底市| 惠东县| 康乐县| 昌黎县| 蒲城县| 西平县| 绥德县| 雷波县| 绥芬河市| 卢湾区| 平阳县| 墨玉县| 大悟县| 阿拉善盟| 曲靖市| 武宁县| 拉萨市| 图们市| 柳林县| 延安市| 简阳市| 安新县| 玛纳斯县| 方山县|