
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Traceroute Service 是一个基于 Elixir/OTP 构建的高性能分布式网络路径追踪服务,提供 HTTP REST API 和 NATS 消息两种接口,用于诊断网络路径。该服务利用 Elixir/OTP 的 supervision trees 实现高容错性,支持并发请求处理和超时管理,适合分布式系统中的网络诊断场景。
bash# 克隆仓库 git clone <repository-url> cd traceroute # 安装依赖 mix deps.get # 设置环境变量 source local-test.env # 如有可用环境配置文件 # 运行测试 mix test # 启动服务 mix run --no-halt
bash# 构建镜像 docker build -t traceroute:latest . # 推荐方式:使用 CAP_NET_RAW 权限(更安全) docker run --cap-add=NET_RAW -p 4100:4100 traceroute:latest # 替代方式:完全特权模式(安全性较低) docker run --privileged -p 4100:4100 traceroute:latest
安全说明:镜像默认以非 root 用户(appuser:1001)运行,仅通过 CAP_NET_RAW capability 获取 ICMP 操作所需权限,符合安全最佳实践。
| 环境变量 | 描述 | 默认值 |
|---|---|---|
NATS_HOST | NATS 服务器主机地址 | "nats" |
NATS_PORT | NATS 服务器端口 | 4222 |
HTTP_PORT | HTTP 服务端口 | 4100 |
MIX_ENV | 运行环境(dev/test/prod) | - |
服务通过以下配置连接 NATS 进行分布式消息处理:
elixir# 配置位于 lib/tracer.ex %{ host: System.get_env("NATS_HOST", "nats"), port: String.to_integer(System.get_env("NATS_PORT", "4222")) }
端点:POST /traceroute
请求示例:
bashcurl -X POST http://localhost:4100/traceroute \ -H "Content-Type: application/json" \ -d '{"host": "google.com"}'
响应示例:
json{ "status": 200, "body": { "result": "ok", "message": "Traceroute successful to google.com", "next_hop_ip": "172.217.14.46", "next_hop_hostname": "lga25s78-in-f14.1e100.net", "next_hop_fqdn": "lga25s78-in-f14.1e100.net" } }
主题:traceroute.request
消息格式:
json{ "body": "google.com", "reply_to": "response.topic" }
响应:与 HTTP API 响应结构类似,通过指定的 reply_to 主题返回
Tracer:主应用监督者Tracer.Worker:traceroute 执行逻辑Tracer.Web.Handler:HTTP 请求处理器NATS.Listener:NATS 消息处理器Tracer.Web.Supervisor:Web 服务器监督者Tracer.Web.Handler → Tracer.Worker → 响应NATS.Listener → Tracer.Worker → 回复Tracer.Worker)trace/1:执行 traceroute 的主函数clean_timeouts/1:过滤超时响应get_last_hop/1:提取有效跳数信息process_results/2:格式化响应数据bash# 运行所有测试 mix test # 运行测试并生成覆盖率报告 mix test --cover # 运行特定测试文件 mix test test/trace/worker_test.exs mix test test/trace/handler_test.exs # 排除集成测试 mix test --exclude integration
当前覆盖率:89.0%
| 模块 | 覆盖率 | 代码行数 | 未覆盖行数 |
|---|---|---|---|
lib/tracer.ex | 100.0% | 5 | 0 |
lib/trace/supervisor.ex | 100.0% | 3 | 0 |
lib/trace/listener.ex | 100.0% | 5 | 0 |
lib/trace/worker.ex | 92.8% | 28 | 2 |
lib/nats_listener.ex | 90.9% | 11 | 1 |
lib/trace/handler.ex | 88.8% | 9 | 1 |
test/trace/worker_test.exs、test/trace/handler_test.exstest/integration_test.exstest/nats_listener_test.exstest/trace/supervisor_test.exselixir# mix.exs 中的测试依赖 {:mox, "~> 1.1", only: :test}, # 模拟框架 {:stream_data, "~> 1.0", only: :test}, # 属性测试 {:excoveralls, "~> 0.18", only: :test}, # 覆盖率报告 {:ex_machina, "~> 2.8", only: :test} # 测试数据生成
dockerfileFROM elixir:1.18.4 AS builder # 多阶段构建优化生产镜像 # 包含 libssl 用于加密操作
yaml# devspace.yaml deployments: - name: traceroute helm: chart: name: ./charts/traceroute
服务提供结构化日志:
bash# 生产构建 MIX_ENV=prod mix release # 生产 Docker 构建 docker build --build-arg BUILD_ENV=prod -t traceroute:prod . # Kubernetes 部署 kubectl apply -f k8s/
.tool-versions)mix setup 安装依赖mix testbash# 代码格式化 mix format # 静态分析 mix credo # 类型检查(如已配置) mix dialyzer # 完整质量检查套件 mix quality
详见 LICENSE 文件。
问题与支持:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务