在 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,方便下次直接使用。
相关推荐
Donk_671 小时前
iSCSI 服务器
运维·服务器·数据库
打码人的日常分享1 小时前
大模型及智能体安全风险防范与治理策略(PPT)
运维·网络·数据库·安全·云计算·制造
Elastic 中国社区官方博客1 小时前
Kubernetes 可观测性:用于更安全 EKS 故障排查的 MCP 专家 agents
大数据·elasticsearch·搜索引擎·云原生·容器·kubernetes·全文检索
hughnz1 小时前
钻井“自动化”的终点就是钻井自主化的起点
运维·数据库·python
颖火虫盟主1 小时前
Claude Code Cron 定时任务:从入门到自动化
运维·docker·自动化
灵晔君2 小时前
【Linux】进程(三)——进程切换、O (1) 调度、环境变量、命令行参数
linux·运维·服务器
云边云科技_云网融合2 小时前
大模型聚合时代:云边云科技 AI 网关轻量化赋能企业落地
大数据·运维·网络·人工智能
Waay2 小时前
MySQL基础高频考点
运维·mysql·adb
yzwlord2 小时前
【无标题】
linux·运维·rust·ssh