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

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

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

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

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


进入开发环境容器测试

进入容器后,直接碰到:

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) 已就绪"
'

提示

  • Alpine 用 apk 安装包,Ubuntu/Debian 用 apt-get。
  • 容器默认使用 bridge 网络模式,测试结果已经比较接近真实环境。
  • 如果 ping 不通(很多云厂商禁用 ICMP),优先使用 curl 测试。
  • 想长期使用?可以基于 Alpine 自己写一个 Dockerfile,方便下次直接使用。
相关推荐
牛马工作号3 小时前
Mosquitto + ACME:从 Docker Compose 部署到 TLS 证书自动续期与加载
运维·docker·容器
Initialize-le6 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根8 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
U-Mail邮件系统9 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
空空dream9 小时前
03 | 离线部署 FastAPI + Ollama(qwen2:0.5b):从 Docker 联调到 Kubernetes 验收
docker·ai·kubernetes·fastapi
天远数科11 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
别动我齐刘海12 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
honsor12 小时前
机房IP化改造首选:以太网温湿度传感器,PoE供电+Modbus TCP一网搞定
linux·运维·服务器
星创易联12 小时前
PLC数据采集与远程运维平台:从边缘计算到集中监控
大数据·运维·边缘计算