Docker 和 Kubernetes 网络问题排查往往复杂,需要深入理解其网络原理并搭配合适工具。netshoot 容器集成了一系列强大的网络排障工具,可直接用于定位 Docker 和 Kubernetes 环境中的网络问题,无需在主机或业务容器中安装额外依赖。
使用 netshoot 前需先理解 网络命名空间(Network Namespaces):它是 Linux 提供的网络资源隔离机制,Docker 和 Kubernetes 均基于此实现网络隔离。
通过切换网络命名空间,netshoot 可直接进入目标容器、主机或网络的命名空间进行排查,无需修改目标环境。
若业务容器网络异常,可让 netshoot 共享其网络命名空间:
bashdocker run -it --net container:<容器名称/ID> nicolaka/netshoot
若怀疑问题出在主机网络,可让 netshoot 使用主机网络:
bashdocker run -it --net host nicolaka/netshoot
需配合 nsenter 工具(详见下文 nsenter 使用示例),需挂载 Docker 网络命名空间目录并以特权模式运行:
bashdocker run -it --privileged -v /var/run/docker/netns:/var/run/docker/netns nicolaka/netshoot
创建一个临时交互式容器,共享目标 Pod 的网络(默认行为):
bashkubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot -- /bin/bash
若需排查主机网络问题,创建使用主机网络的临时容器:
bashkubectl run tmp-shell --rm -i --tty --overrides='{"spec": {"hostNetwork": true}}' --image nicolaka/netshoot -- /bin/bash
网络问题常导致性能下降,如延迟、路由错误、DNS 解析失败、防火墙拦截、ARP 表不完整等。netshoot 集成了 Linux 可观测性工具图谱 推荐的核心工具,覆盖各类排查场景。
包含以下关键工具(部分工具使用示例见下文):
apache2-utils, bash, bind-tools, bird, bridge-utils, busybox-extras, calicoctl, conntrack-tools, ctop, curl, dhcping, drill, ethtool, fping, httpie, iftop, iperf, iproute2, iptables, mtr, netcat-openbsd, nmap, openssl, scapy, socat, tcpdump, tcptraceroute, termshark, tshark, vim
用途:测量容器/主机间的带宽和延迟。
bashdocker network create -d overlay perf-test
bashdocker service create --name perf-test-a --network perf-test nicolaka/netshoot iperf -s -p 9999
bashdocker service create --name perf-test-b --network perf-test nicolaka/netshoot iperf -c perf-test-a -p 9999
bashdocker logs <perf-test-a 容器ID>
用途:捕获网络数据包,分析协议细节。
在 iperf 测试场景中,进入服务端容器的网络命名空间,捕获 9999 端口流量:
bash# 进入 perf-test-a 容器的网络命名空间 docker run -it --net container:perf-test-a.1.<容器ID> nicolaka/netshoot # 捕获 eth0 网卡上 9999 端口的 TCP 包(-c 1 表示只抓1个包) tcpdump -i eth0 port 9999 -c 1 -Xvv
用途:检查端口监听、连接状态等。
确认 iperf 服务端是否监听 9999 端口:
bash# 进入服务端网络命名空间 docker run -it --net container:perf-test-a.1.<容器ID> nicolaka/netshoot # 查看监听端口(-tulpn:TCP/UDP/监听/程序名) netstat -tulpn
输出中若显示 0.0.0.0:9999,说明端口正常监听。
用途:检测目标端口开放状态(开放/关闭/被过滤)。
扫描目标主机 172.31.24.25 的 - 端口范围:
bashdocker run -it --privileged nicolaka/netshoot nmap -p ***-*** -dd 172.31.24.25
用途:类似 top,实时显示主机间带宽占用。
在 iperf 测试中,监控服务端容器的 eth0 网卡流量:
bashdocker run -it --net container:perf-test-a.1.<容器ID> nicolaka/netshoot iftop -i eth0
用途:诊断 DNS 解析问题,查看域名解析过程。
在 Docker 覆盖网络中,解析服务名 perf-test-b:
bashdocker run -it --net container:perf-test-a.1.<容器ID> nicolaka/netshoot drill perf-test-b
输出中 ANSWER SECTION 会显示解析到的服务 VIP。
用途:检测端口连通性,排查防火墙拦截。
bashdocker network create -d overlay my-ovl docker service create --name service-a --network my-ovl nicolaka/netshoot nc -l 8080
bashdocker service create --name service-b --network my-ovl nicolaka/netshoot nc -vz service-a 8080
succeeded,说明端口连通。用途:进入 Docker 网络(如覆盖网络)自身的命名空间,查看底层网络配置(如网桥、VxLAN 接口)。
bashdocker network create -d overlay nsenter-test docker service create --name test-svc --replicas 3 --network nsenter-test busybox ping localhost
nsenter-test,命名空间名为 1-<网络ID前缀>):
bashdocker run -it --privileged -v /var/run/docker/netns:/var/run/docker/netns nicolaka/netshoot nsenter --net=/var/run/docker/netns/1-nsenter-test sh
bashbrctl show # 显示网桥及关联接口 bridge fdb show br br0 # 查看 L2 转发表
用途:实时监控容器 CPU、内存、网络 I/O 等指标。
挂载 Docker 套接字,启动 ctop:
bashdocker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock nicolaka/netshoot ctop
用途:终端中捕获和分析数据包,支持 Wireshark 过滤规则。
捕获主机 eth0 网卡的 ICMP 流量:
bashdocker run --rm --cap-add=NET_ADMIN --cap-add=NET_RAW -it nicolaka/netshoot termshark -i eth0 icmp
netshoot 持续迭代,欢迎通过项目仓库提交问题或贡献代码。
来自真实用户的反馈,见证轩辕镜像的优质服务
运维工程师
Linux服务器
"Docker加速体验非常流畅,大镜像也能快速完成下载。"
后端开发
Mac桌面
"配置Docker镜像源后,拉取速度快了数倍,开发体验提升明显。"
平台研发
K8s集群
"轩辕镜像在K8s集群中表现很稳定,容器部署速度明显加快。"
测试工程师
Windows桌面
"Docker镜像下载不再超时,测试环境搭建更加高效。"
DevOps工程师
宝塔面板
"配置简单,Docker镜像源稳定,适合快速部署环境。"
资深开发
群晖NAS
"在群晖NAS上配置后,镜像下载速度飞快,非常适合家庭实验环境。"
后端工程师
飞牛NAS
"Docker加速让容器搭建顺畅无比,再也不用等待漫长的下载。"
测试经理
Linux服务器
"镜像源覆盖面广,更新及时,团队一致反馈体验不错。"
云平台工程师
Podman容器
"使用轩辕镜像后,Podman拉取镜像稳定无比,生产环境可靠。"
运维主管
爱快路由
"爱快系统下配置加速服务,Docker镜像拉取速度提升非常大。"
安全工程师
Linux服务器
"镜像源稳定性高,安全合规,Docker拉取无忧。"
架构师
K8s containerd
"大规模K8s集群下镜像加速效果显著,节省了大量时间。"
平台开发
Docker Compose
"配置Compose镜像加速后,整体构建速度更快了。"
技术支持
Windows桌面
"配置简单,镜像拉取稳定,适合日常开发环境。"
DevOps Leader
极空间NAS
"在极空间NAS上使用Docker加速,体验流畅稳定。"
数据工程师
Linux服务器
"Docker镜像源下载速度快,大数据环境搭建轻松完成。"
SRE
宝塔面板
"使用轩辕镜像后,CI/CD流程整体快了很多,值得推荐。"
前端开发
Mac桌面
"国内网络环境下,Docker加速非常给力,前端环境轻松搭建。"
架构师
威联通NAS
"威联通NAS下配置镜像加速后,Docker体验比官方源好很多。"
系统工程师
绿联NAS
"绿联NAS支持加速配置,Docker镜像下载快且稳定。"
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429