在 Docker 容器里测试外部域名延迟

前言:为什么要在 Docker 容器里测延迟?

在本地电脑测延迟很容易,但有时候我们需要在生产环境的容器环境里测试,比如:

  • 验证容器网络是否正常
  • 测试不同镜像的网络表现
  • 模拟生产环境做延迟监控
  • 开发网络相关工具

然而,大多数开发环境用的 Docker 基础镜像(尤其是 Alpine、slim 版本)都非常精简,连 curlping 都没有,这就很头疼了,而且说不好会影响正式环境生产。


进入开发环境容器测试

进入容器后,直接碰到:

bash 复制代码
sh: 1: curl: not found
E: Unable to locate package iputils-ping
E: Unable to locate package curl

这是因为容器是极简系统,没有预装常用工具,也可能用了错误的包管理器。


正确解决方案(推荐使用 Alpine 镜像)

Alpine 是最适合做这种测试的轻量镜像,体积小、速度快。

第一步:启动一个干净的测试容器

在宿主机执行下面命令:

bash 复制代码
docker run -it --rm --name delay-test alpine:latest sh

第二步:安装必要工具

进入容器后,一条命令搞定所有工具:

bash 复制代码
# 安装网络测试工具 + Python
apk add --no-cache curl bind-tools iputils-ping python3 py3-pip

# 创建软链接,方便使用 python 和 pip 命令
ln -sf /usr/bin/python3 /usr/bin/python
ln -sf /usr/bin/pip3 /usr/bin/pip

第三步:开始测试域名延迟

1. 最推荐的 curl 综合测试(能看到完整延迟 breakdown)

bash 复制代码
curl -w "
域名:                  %{url_effective}
DNS解析时间:           %{time_namelookup}s
TCP连接时间:           %{time_connect}s
SSL握手时间:           %{time_appconnect}s
首字节时间(TTFB):      %{time_starttransfer}s
总耗时:                %{time_total}s
" -o /dev/null -s https://www.google.com

2. 传统 ping 测试

bash 复制代码
ping -c 4 www.google.com

3. 批量测试多个域名

bash 复制代码
for domain in www.google.com baidu.com taobao.com cloudflare.com; do
    echo "========== 测试 $domain =========="
    curl -w "DNS: %{time_namelookup}s | 总时间: %{time_total}s\n" -o /dev/null -s https://$domain
done

第四步:验证 Python 是否可用
bash 复制代码
python --version
pip --version

成功后,就可以在容器里写 Python 脚本做更复杂的延迟监控了。


一键启动完整环境(最方便)

如果你不想一步步操作,可以直接在宿主机运行这条命令:

bash 复制代码
docker run -it --rm alpine:latest sh -c '
    apk add --no-cache curl bind-tools iputils-ping python3 py3-pip && 
    ln -sf /usr/bin/python3 /usr/bin/python && 
    echo "✅ 环境准备完成!Python $(python --version) 已就绪"
'

提示

  • Alpineapk 安装包,Ubuntu/Debianapt-get
  • 容器默认使用 bridge 网络模式,测试结果已经比较接近真实环境。
  • 如果 ping 不通(很多云厂商禁用 ICMP),优先使用 curl 测试。
  • 想长期使用?可以基于 Alpine 自己写一个 Dockerfile,方便下次直接使用。
相关推荐
Cosolar2 小时前
LlamaIndex索引类型全解析:原理与实战指南
运维·服务器
方便面不加香菜5 小时前
Linux--基础IO(一)
linux·运维·服务器
鼎讯信通7 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..7 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
杨浦老苏8 小时前
开源多用户图书追踪系统LibrisLog
docker·群晖·收藏管理
跨境数据猎手8 小时前
大数据在电商行业的应用
大数据·运维·爬虫
linyanRPA9 小时前
影刀RPA店群自动化实战:多店铺活动自动报名与促销管理架构设计
运维·自动化·办公自动化·rpa·python脚本·爬虫自动化·店群自动化
会Tk矩阵群控的小木9 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
赵渝强老师9 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
鹤落晴春9 小时前
【K8s】配置存储卷
云原生·容器·kubernetes