当前位置: 首页 > news >正文

Docker容器ping不通外网问题排查及解决

Docker容器ping不通外网问题排查及解决

解决方案在最下面,不看过程的可直接拉到最下面。

一台虚拟机里突然遇到docker容器一直访问外网失败,网上看到这个解决方案,这边记录一下。

首先需要明确docker的网桥模式,网桥工作在二层(OSI堆栈),是通用网络设备的一种,可以设置IP地址。有了IP地址,Linux便可通过路由表或IP表,在网络层定位网桥,这就相当于有了一个虚拟网卡,即docker0。docker0默认的地址划分:IP(127.17.42.1/16),在启动容器时,docker会在宿主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备,容器启动时,Docker引擎将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在宿主机中,以veth***这样类似的名字命名,并将这个网络设备加入到docker0网桥中,可以通过brctl show命令查看,从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。

一、首先检查宿主机的网络配置

1.检查网桥brctl sho

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces  
docker0         8000.f229f45b3df2       no              vethaef304e  

2.检查ip

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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 1400 qdisc pfifo_fast state UP group default qlen 1000  link/ether fa:16:3e:5d:75:0a brd ff:ff:ff:ff:ff:ff  inet 10.164.99.214/20 brd 10.164.111.255 scope global dynamic eth0  valid_lft 69570sec preferred_lft 69570sec  inet6 fe80::f816:3eff:fe5d:750a/64 scope link   valid_lft forever preferred_lft forever  
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000  link/ether fa:16:3e:45:a9:5e brd ff:ff:ff:ff:ff:ff  inet 10.122.76.71/24 brd 10.122.76.255 scope global dynamic eth1  valid_lft 65709sec preferred_lft 65709sec  inet6 fe80::f816:3eff:fe45:a95e/64 scope link   valid_lft forever preferred_lft forever  
128: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default   link/ether f2:29:f4:5b:3d:f2 brd ff:ff:ff:ff:ff:ff  inet 172.17.10.1/24 brd 172.17.10.255 scope global docker0  valid_lft forever preferred_lft forever  inet6 fe80::e03c:c3ff:fe90:1cee/64 scope link   valid_lft forever preferred_lft forever  
130: vethaef304e@if129: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default   link/ether f2:29:f4:5b:3d:f2 brd ff:ff:ff:ff:ff:ff link-netnsid 0  inet6 fe80::f029:f4ff:fe5b:3df2/64 scope link   valid_lft forever preferred_lft forever

可以看到docker创建的虚拟网卡docker0的网段为172.17.10.1/24

3.查看路由: ip route

[root@localhost ~]# ip route
10.160.146.0/23 via 10.122.72.1 dev eth1   
172.16.0.0/12 via 10.122.72.1 dev eth1   
172.17.0.0/20 via 10.122.72.1 dev eth1   
172.17.10.0/24 dev docker0 proto kernel scope link src 172.17.10.1 

即172.17.10.0/24网段的包均通过docker0网桥来转发.

二、再来查看容器的ip: docker exec -it <容器名称> ip a

[root@localhost ~]# docker exec -it c_name ip a
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  
129: eth0@if130: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP   link/ether 02:42:ac:11:0a:02 brd ff:ff:ff:ff:ff:ff  inet 172.17.10.2/24 brd 172.17.10.255 scope global eth0  valid_lft forever preferred_lft forever  

可以看到虚拟网卡eth0的ip为172.17.10.2

1.查看容器内的路由: docker exec -it c_name ip route

[root@localhost ~]# docker exec -it c_name ip route
default via 172.17.10.1 dev eth0   
172.17.10.0/24 dev eth0 scope link  src 172.17.10.2 

由此可知172.17.10.0网段的包均走容器内的eth0,默认网关为172.17.10.1

2. 如果容器中无法ping通外网,首先查看能否ping通网关。如果网关都无法ping通,说明网桥或网段有问题。这里就可以用tcpdump来查看。比如监控上面第一步的网桥接口tcpdump -i vethaef304e -nn,正常的网络包应答如下:bash-4.4# ping -c 1 8.8.8.8

[root@localhost ~]#  tcpdump -i vethaef304e -nn  
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode  
listening on vethaef304e, link-type EN10MB (Ethernet), capture size 262144 bytes  
17:17:16.282976 IP 172.17.10.2 > 8.8.8.8: ICMP echo request, id 2304, seq 0, length 64  
17:17:16.325812 IP 8.8.8.8 > 172.17.10.2: ICMP echo reply, id 2304, seq 0, length 64  
17:17:21.297595 ARP, Request who-has 172.17.10.1 tell 172.17.10.2, length 28  
17:17:21.297656 ARP, Reply 172.17.10.1 is-at f2:29:f4:5b:3d:f2, length 28  

异常时就只有request who-has包,没有reply

三、问题解决

查看网桥,路由和ip均没发现问题,试试修改docker0的默认网段,居然成功了,步骤如下:

1.删除原有配置

service docker stop  
ip link set dev docker0 down  
brctl delbr docker0  
iptables -t nat -F POSTROUTING  

2.创建新的网桥

brctl addbr docker0  
ip addr add 172.17.10.1/24 dev docker0  
ip link set dev docker0 up  

3.修改docker配置,在/etc/docker/daemon.json中追加bip如下,注意json的格式,bip前面需要有,root@XXXXXX~# cat /etc/docker/daemon.json

vim /etc/docker/daemon.json
{"insecure-registries":["x.x.x"],"bip": "172.17.10.1/24"
}  

4.重启docker:
systemctl restart docker

[root@localhost ~]# systemctl  restart  docker

相关文章:

Docker容器ping不通外网问题排查及解决

Docker容器ping不通外网问题排查及解决 解决方案在最下面&#xff0c;不看过程的可直接拉到最下面。 一台虚拟机里突然遇到docker容器一直访问外网失败&#xff0c;网上看到这个解决方案&#xff0c;这边记录一下。 首先需要明确docker的网桥模式&#xff0c;网桥工作在二层…...

JavaScript 库 number-precision 如何使用?

number-precision 是一个 JavaScript 库&#xff0c;主要用于处理 JavaScript 中的数字精度问题。它提供了一些方法&#xff0c;帮助你进行数字运算时保持精度&#xff0c;尤其是在涉及到浮点数运算时&#xff0c;它能够避免传统 JavaScript 中精度丢失的问题。 例如&#xff…...

faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-2

文件ScalarQuantizer.h 主要介绍这里面的枚举以及一些函数内容&#xff1a;QuantizerType、RangeStat、ScalarQuantizer、train、compute_codes、decode、SQuantizer、FlatCodesDistanceComputer、get_distance_computer、select_InvertedListScanner QuantizerType 量化类型…...

性能测试工具Grafana、InfluxDB和Collectd的搭建

一、性能监控组成简介 1、监控能力分工:这个系统组合能够覆盖从数据采集、存储到可视化的整个监控流程。Collectd可以收集各种系统和应用的性能指标,InfluxDB提供高效的时序数据存储,而 Grafana 则将这些数据以直观的方式呈现出来。2,实时性能监控:对于需要实时了解系统状…...

【ruby on rails】dup、deep_dup、clone的区别

一、区别 dup 浅复制&#xff1a;dup 方法创建对象的浅复制。 不复制冻结状态&#xff1a;dup 不会复制对象的冻结状态。 不复制单例方法&#xff1a;dup 不会复制对象的单例方法。 deep_dup 深复制&#xff1a;deep_dup 方法创建对象的深复制&#xff0c;递归复制嵌套的对象。…...

原生微信小程序画表格

wxml部分&#xff1a; <view class"table__scroll__view"><view class"table__header"><view class"table__header__item" wx:for"{{TableHeadtitle}}" wx:key"index">{{item.title}}</view></…...

Python实现IP代理池

文章目录 Python实现IP代理池一、引言二、步骤一&#xff1a;获取代理IP1、第一步&#xff1a;爬取代理IP2、第二步&#xff1a;验证代理IP的有效性 三、步骤二&#xff1a;构建IP代理池四、使用示例1、完整的使用示例2、注意事项3、处理网络问题 五、总结 Python实现IP代理池 …...

互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?

在数字化时代&#xff0c;视频点播应用已经成为我们生活中不可或缺的一部分。监控技术与视频点播的结合正悄然改变着我们获取和享受媒体内容的方式。这一变革不仅体现在技术层面的进步&#xff0c;更深刻地影响了我们。 EasyDSS视频直播点播平台是一款高性能流媒体服务软件。E…...

32.4 prometheus存储磁盘数据结构和存储参数

本节重点介绍 : prometheus存储磁盘数据结构介绍 indexchunkshead chunksTombstoneswal prometheus对block进行定时压实 compactprometheus 查看支持的存储参数 prometheus存储示意图 内存和disk之间的纽带 wal WAL目录中包含了多个连续编号的且大小为128M的文件&#xff0c…...

C7.【C++ Cont】范围for的使用和auto关键字

目录 1.知识回顾 2.范围for 格式 使用 运行结果 运行过程 范围for的本意 作用 注意 3.底层分析范围for的执行过程 反汇编代码 分析 4.auto关键字 格式 基本用法 在范围for中使用auto 1.知识回顾 for循环的使用参见25.【C语言】循环结构之for文章 2.范围for C…...

联通云服务器部署老项目tomcat记录

1.先在服务器上安装mysql和tomcat 2.tomcat修改端口 3.在联通云运控平台配置tomcat访问端口&#xff08;相当于向外部提供可访问端口&#xff09; 4.将tomcat项目放在服务器tomcat的webapps里面 5.在mysql里创建项目数据库&#xff0c;运行sql创建表和导入数据 6.在配置文…...

剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍

一、三种批量替换模式的区别 二、混剪裂变替换素材 三、分区混剪裂变替换素材 四、按组精确替换素材 五、绿色按钮教程 &#xff08;一&#xff09;如何附加音频和srt字幕 &#xff08;二&#xff09;如何替换固定文本的内容和样式 &#xff08;三&#xff09;如何附加…...

el-dialog中调用resetFields()方法重置表单报错

前言 在开发中&#xff0c;弹框和表单是两个常见的组件&#xff0c;它们通常一起使用以实现用户交互和数据输入。然而&#xff0c;当我们尝试在弹框中调用表单的 resetFields() 方法时&#xff0c;有时会遇到报错的情况。 一、用法错误 确保 this.$refs[ruleForm].resetFields…...

分布式系统接口,如何避免重复提交

分布式系统接口&#xff0c;如何避免重复提交 1、基于Token的幂等设计原理实现步骤技术选型 2、基于Token的幂等设计原理实现步骤适用场景 3、幂等性设计原理实现方式 4、分布式锁原理实现方式适用场景 5、请求去重原理实现方式 6.前端防护原理实现方式适用场景 7.延迟队列原理…...

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下&#xff0c;声音处理领域取得了巨大进展。从语音识别&#xff08;ASR&#xff09;到文本转语音&#xff08;TTS&#xff09;&#xff0c;再到个性化声音克隆&#xff0c;这些技术已经深入到我们的日常生活中&#xff1a;语音助手、自动字幕生成、语音导…...

【论文速读】| 人工智能驱动的网络威胁情报自动化

基本信息 原文标题&#xff1a;AI-Driven Cyber Threat Intelligence Automation 原文作者&#xff1a;Shrit Shah, Fatemeh Khoda Parast 作者单位&#xff1a;加拿大圭尔夫大学计算机科学学院 关键词&#xff1a;网络威胁情报&#xff0c;AI自动化&#xff0c;攻击技术和…...

什么是域名监控?

域名监控是持续跟踪全球域名系统&#xff08;DNS&#xff09;中变化以发现恶意活动迹象的过程。组织可以对其拥有的域名进行监控&#xff0c;以判断是否有威胁行为者试图入侵其网络。他们还可以对客户的域名使用这种技术以执行类似的检查。 你可以将域名监控比作跟踪与自己实物…...

vue3 发送 axios 请求时没有接受到响应数据

<script setup> import Edit from ./components/Edit.vue import axios from axios import { onMounted,ref } from vue// TODO: 列表渲染 //装数据的列表 const list ref([]) const count ref(0) const getList async () > {//通过发送 /list 请求从后端拿到列表数…...

前端使用fontfaceobserver库实现字体设置

要使用FontFaceObserver来加载设置项目本地的字体&#xff0c;先确保字体文件位于项目中或者可以从服务端获取到&#xff0c;这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步&#xff1a; npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...

【人工智能】Python常用库-PyTorch常用方法教程

PyTorch 是一个强大的开源深度学习框架&#xff0c;以其灵活性和动态计算图而广受欢迎。以下是 PyTorch 的详细教程&#xff0c;涵盖从基础到实际应用的使用方法。 1. 安装与导入 1.1 安装 PyTorch 访问 PyTorch 官方网站&#xff0c;根据系统、Python 版本和 CUDA 支持选择安…...

婚礼技能库:用开源协作与项目管理思维打造个性化婚礼

1. 项目概述&#xff1a;婚礼技能库的诞生与价值婚礼&#xff0c;对大多数人来说&#xff0c;是人生中为数不多的、需要同时扮演项目经理、创意总监、财务主管和情感联络员的高压事件。筹备过程琐碎繁杂&#xff0c;从场地布置、流程设计&#xff0c;到妆发造型、摄影摄像&…...

3分钟上手RePKG:轻松提取Wallpaper Engine壁纸资源的终极指南

3分钟上手RePKG&#xff1a;轻松提取Wallpaper Engine壁纸资源的终极指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经遇到过这样的困扰&#xff1f;在Wallpaper Engi…...

Python数据聚合抓取工具:从配置化引擎到实战避坑指南

1. 项目概述&#xff1a;一个多功能的“聚合爪”工具最近在GitHub上闲逛&#xff0c;发现了一个名字挺有意思的项目&#xff1a;al1enjesus/polyclawster。这个名字拆开看&#xff0c;“poly”代表多&#xff0c;“clawster”听起来像是“claw”&#xff08;爪子&#xff09;和…...

从零打造专业GitHub个人资料页:Markdown与动态集成实战指南

1. 项目概述与核心价值 在技术圈子里混了十几年&#xff0c;我越来越觉得&#xff0c;一个开发者的“数字门面”和代码能力同等重要。这个门面&#xff0c;很多时候就是你的GitHub主页。早些年&#xff0c;大家的GitHub个人页面就是个简单的仓库列表&#xff0c;加上一些贡献图…...

MCP服务器部署模板:容器化与CI/CD自动化实践指南

1. 项目概述&#xff1a;一个为MCP服务器量身定制的部署蓝图如果你正在开发或维护一个基于模型上下文协议&#xff08;Model Context Protocol&#xff0c; MCP&#xff09;的服务器&#xff0c;并且对如何将其优雅、可靠地部署到生产环境感到头疼&#xff0c;那么你很可能已经…...

安得医疗冲刺港股:年营收9亿,利润1.5亿 上海亿瑞控制41%股权

雷递网 雷建平 5月16日山东安得医疗用品股份有限公司&#xff08;简称&#xff1a;“安得医疗”&#xff09;日前递交招股书&#xff0c;准备在港交所上市。截至2023年、2024年及2025年12月31日止年度&#xff0c;安得医疗分别宣派及派付股息6670万元、4670万元及4000万元。年营…...

Nexus:RAG 时代终结?编译器 AI 知识层来了

最近 Pinecone 发布了一个新东西&#xff1a;**Nexus。**最早我是在抖音上看到的&#xff0c;说实话&#xff0c;这种标题挺吓人的&#xff0c;低劣但有效&#xff0c;我都忍不住要点进去&#xff1a; RAG 时代终结了。向量数据库不够用了。Agent 需要 Knowledge Engine。因为…...

Altium Designer20 从零到一:新手必备的安装与核心功能上手指南

1. Altium Designer20安装全攻略 第一次接触Altium Designer20&#xff08;简称AD20&#xff09;时&#xff0c;我和大多数电子设计新手一样&#xff0c;面对这个专业软件既兴奋又忐忑。记得当时为了完成课程设计&#xff0c;我在宿舍折腾了整整一个下午才搞定安装。现在回想起…...

【BK3633】从规格书到实战:解锁蓝牙5.2双模芯片的十大核心应用场景

1. BK3633芯片核心特性解析 第一次拿到BK3633规格书时&#xff0c;我被它的参数惊艳到了——这简直是为物联网设备量身定制的瑞士军刀。作为博通集成推出的蓝牙5.2双模芯片&#xff0c;它完美兼顾了高性能与低功耗这对"冤家"。实测下来&#xff0c;全速运行电流仅5mA…...

Pinia Colada:革命性Vue数据获取层的完整入门指南

Pinia Colada&#xff1a;革命性Vue数据获取层的完整入门指南 【免费下载链接】pinia-colada &#x1f379; The smart data fetching layer for Vue 项目地址: https://gitcode.com/gh_mirrors/pi/pinia-colada Pinia Colada是Vue生态系统中一款革命性的数据获取层解决…...