Docker搭建Zipkin或Jaeger本质是启动预集成单体容器:Zipkin用docker run -d --name zipkin -p 9411:9411 openzipkin/zipkin,访问https://www.php.cn/link/9c975e80ae0c16ac742ab69f9750ce6d;Jaeger用docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 -p 6831:6831/udp -p 16686:16686 -p 9411:9411 jaegertracing/all-in-one,访问https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0。

用 Docker 搭建 Zipkin 或 Jaeger,本质是启动一个预集成的单体服务容器,5 分钟内即可获得可访问的追踪 UI 和基础采集能力。关键不在于复杂配置,而在于选对镜像、暴露正确端口、并让业务服务能连上。
Zipkin:一行命令跑起来
Zipkin 最简部署只需一条 docker run 命令:
- 执行:
docker run -d --name zipkin -p 9411:9411 openzipkin/zipkin:latest - 启动后直接访问 https://www.php.cn/link/9c975e80ae0c16ac742ab69f9750ce6d,就能看到 Zipkin 的搜索界面
- 它默认使用内存存储,适合本地验证;如需持久化,可挂载卷或改用 Elasticsearch 后端(通过环境变量
ZIPKIN_STORAGE_TYPE=elasticsearch配置)
Jaeger:All-in-One 模式最省事
Jaeger 提供官方 all-in-one 镜像,把 Agent、Collector、Query、UI 全打包进一个容器:
- 推荐命令(含 Zipkin 兼容端口,方便多 SDK 接入):
docker run -d --name jaeger \<br> -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \<br> -p 6831:6831/udp \<br> -p 16686:16686 \<br> -p 9411:9411 \<br> jaegertracing/all-in-one:1.55
- 访问 https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0 进入 Jaeger UI,支持 Trace 搜索、依赖图、性能分析等高级功能
- UDP 端口
6831是默认的 Thrift agent 端口,多数语言 SDK(如 Java、Go 的 OpenTracing 客户端)会直连此地址上报数据
让微服务自动上报追踪数据
容器跑起来只是第一步,服务必须“说话”才能被看见:
-
Java Spring Boot 项目:在
pom.xml加两个依赖:spring-cloud-starter-sleuth(自动注入 trace ID)opentracing-spring-jaeger-cloud-starter(对接 Jaeger)
再配环境变量:JAEGER_AGENT_HOST=host.docker.internal(Mac/Win)或宿主机 IP(Linux) -
通用方式(任意语言):设置环境变量让 SDK 找到 Agent:
JAEGER_AGENT_HOST=jaeger+JAEGER_AGENT_PORT=6831(Docker Compose 场景下,服务与 jaeger 在同一网络)
或直连 Collector:JAEGER_ENDPOINT=http://localhost:14268/api/traces - Zipkin 生态更倾向 HTTP 上报,Java 可用
spring-cloud-starter-zipkin,配置spring.zipkin.base-url=https://www.php.cn/link/9c975e80ae0c16ac742ab69f9750ce6d
进阶提示:Docker Compose 一键编排
若需同时运行追踪系统 + 多个微服务,用 docker-compose.yml 更清晰:
- Zipkin 示例:
services:
zipkin:
image: openzipkin/zipkin:latest
ports: ["9411:9411"]
- Jaeger 示例(带服务发现支持):
services:
jaeger:
image: jaegertracing/all-in-one:1.55
ports: ["16686:16686", "6831:6831/udp", "9411:9411"]
my-service:
build: ./my-service
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
- 运行
docker-compose up -d,所有组件自动组网,服务可直接用服务名通信











