Docker部署jaeger:手把手教你用Docker部署

手把手教你用Docker部署Jaeger链路追踪系统

如果你正在做微服务架构调试或性能分析,Jaeger 是一个非常实用的链路追踪工具。
本文围绕 Docker部署jaeger 展开,按零基础也能直接照做的方式讲清准备条件、操作步骤、常见报错和验证方法。

环境与前提

  • 一台已安装 Docker 的 Linux 服务器(推荐 2 核 4G 以上)。
  • Docker 版本不低于 20.10。
  • 服务器防火墙开放 16686(Web 管理界面)和 6831/6832(Agent UDP 端口)等。
  • 确保能正常拉取 Docker Hub 镜像(若使用国内服务器,建议配置镜像加速器)。

检查 Docker 是否安装

docker --version

如果未安装,参考官方文档或使用包管理器安装(如 yum install -y docker-ce)。

Docker 一键部署 Jaeger(all-in-one 模式)

对于测试或小规模使用,官方提供 all-in-one 镜像,包含 Agent、Collector、Query 和 UI,一个容器搞定。

执行以下命令启动:

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest

参数说明

  • -d 后台运行。
  • --name jaeger 容器名。
  • -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 开启 Zipkin 兼容端口(可不加)。
  • 端口映射:16686 是 Web UI,6831/6832 是 Agent 接收 Jaeger 客户端数据的 UDP 端口,14268 为 Collector 的 HTTP 端口,14250 为 gRPC 端口。

启动后可通过 docker ps 确认容器状态:

docker ps | grep jaeger

看到 STATUS Up 即正常。

配置文件与关键参数说明

若需要使用持久化存储(而非默认内存),可以通过挂载外部存储或配置环境变量。
例如将数据保存到 Elasticsearch:

docker run -d --name jaeger \
  -e SPAN_STORAGE_TYPE=elasticsearch \
  -e ES_SERVER_URLS=http://your-es:9200 \
  -p 16686:16686 \
  jaegertracing/all-in-one:latest
注意:生产环境建议拆分部署(Agent、Collector、Query 等组件各自独立),但本文只演示 all-in-one 入门用法。

另外,时区问题常见于日志时间显示。
docker run 中添加 -e TZ=Asia/Shanghai 即可设置时区。

常见问题与避坑

Q1:端口被占用怎么办?
例如 16686 已被其他应用占用,可修改宿主端口映射:-p 8080:16686,之后通过 http://服务器IP:8080 访问。

Q2:启动时提示 "port is already allocated"
停掉占用端口的容器:docker stop <容器名> 或者更换端口映射。

Q3:Web UI 打开后看不到任何数据?
检查应用是否已正确配置 Jaeger 客户端(如 OpenTelemetry SDK),并确保 Agent 地址能访问。若只在本地测试,可以先用官方示例应用:

docker run --rm -p 8000:8000 jaegertracing/example-hotrod:latest all

该应用会自动向 jaeger 发送数据,然后在 UI 中搜索 service 名为 hotrod 的 trace。

避坑清单

  • 防火墙 / 安全组必须放行 UDP 6831、6832 和 TCP 16686。
  • 容器名不能重复,建议每次先 docker rm -f jaeger 再重新创建。
  • 默认存储为内存,重启容器后历史数据丢失,生产务必配置持久化后端。

验证是否部署成功

打开浏览器访问 http://你的服务器IP:16686,看到 Jaeger UI 页面。
点击左侧“Search”标签,在“Service”下拉框中如果能看到 hotrod 或你的应用 service 名,说明 Docker部署jaeger 已成功上线并收到了追踪数据。

你可以点击任意 trace 查看调用链详情(每条 span 的耗时、标签、日志等)。
至此,链路追踪系统搭建完成,后续可对接任意 OpenTelemetry 或 Jaeger 客户端 SDK。

如果你正在处理 Docker部署jaeger,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分,通常能快速解决。

分享到:
上一篇
Linux服务器网络带宽优化:从调整内核参数到实战验证
下一篇
服务器日志管理系统搭建实用教程,零基础也能操作
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意