家用住宅主机Linux SkyWalking链路追踪容器服务

家用 Linux 主机部署 SkyWalking 链路追踪容器服务教程

如果你家里有一台 Linux 主机(比如旧电脑或 NAS),想用它来搭建一个分布式系统的链路追踪平台,SkyWalking 是一个轻量级且社区活跃的选择。
本文将从零开始,帮你用 Docker Compose 在本地网络里跑起 SkyWalking 的 OAP(数据存储与分析)和 UI(可视化界面),并且通过一个简单的 Spring Boot 应用验证链路数据是否正常上报。

准备条件

在开始之前,需要确认你的家用主机满足以下条件:

  1. 操作系统:Linux(Ubuntu / CentOS / Debian 均可,内核版本建议 4.0 以上)。
  2. 已安装 Docker 和 Docker Compose
  • Docker >= 20.10
  • Docker Compose >= 1.29(或使用 docker compose 插件)
  1. 网络环境:主机可以正常访问 Docker Hub 或其他镜像仓库(如果你在内网,请提前准备好 SkyWalking 镜像)。
  2. 预留端口:需要开放 11800(gRPC 协议,Agent 上报用)、12800(HTTP 协议,Agent 上报备用)、8080(SkyWalking UI 的 HTTP 端口)。如果主机有防火墙,记得放通这些端口。

使用 Docker Compose 部署 SkyWalking

1. 创建项目目录

在主机的 /home/yourname/ 下创建一个叫 skywalking 的文件夹,用于存放配置文件和数据。

mkdir -p /home/yourname/skywalking && cd /home/yourname/skywalking

2. 编写 docker-compose.yml

skywalking 目录下新建 docker-compose.yml 文件,内容如下:

version: '3'
services:
  skywalking-oap:
    image: apache/skywalking-oap-server:9.7.0
    container_name: skywalking-oap
    restart: always
    ports:
      - "11800:11800"   # gRPC
      - "12800:12800"   # HTTP
    environment:
      - SW_STORAGE=elasticsearch7
      - SW_ES_USER=elastic
      - SW_ES_PASSWORD=your_es_password  # 根据实际替换
    volumes:
      - ./oap-data:/skywalking/data  # 持久化数据
    networks:
      - skywalking

  skywalking-ui:
    image: apache/skywalking-ui:9.7.0
    container_name: skywalking-ui
    restart: always
    ports:
      - "8080:8080"
    environment:
      - SW_OAP_ADDRESS=http://skywalking-oap:12800
    depends_on:
      - skywalking-oap
    networks:
      - skywalking

networks:
  skywalking:
    driver: bridge
注意:本例存储后端使用 Elasticsearch 7,需要提前准备一个 ES 实例(或者改成 H2 内嵌模式用于测试,但生产不推荐)。如果你没有 ES,可以把 SW_STORAGE 改为 h2,并在 skywalking-oapenvironment 中去掉 ES 相关变量,同时挂载 ./oap-data 用于 H2 持久化。

3. 启动服务

skywalking 目录下执行:

docker compose up -d

等待几分钟,查看容器状态:

docker compose ps

如果两个容器状态都是 Up,说明启动成功。

验证链路追踪是否生效

1. 访问 SkyWalking UI

打开浏览器,输入 http://你的主机IP:8080,如果看到 SkyWalking 的仪表盘,说明 UI 正常工作。

2. 配置一个简单的 Java 应用上报数据

下载一个 Spring Boot 示例 JAR,或者自己写一个。
然后在启动时加入 SkyWalking Java Agent 参数。
假设你的 agent 包已经解压到 /home/yourname/skywalking-agent,启动命令如下:

java -javaagent:/home/yourname/skywalking-agent/skywalking-agent.jar \
     -Dskywalking.agent.service_name=my-test-service \
     -Dskywalking.collector.backend_service=你的主机IP:11800 \
     -jar my-app.jar
注意collector.backend_service 的 IP 填写你家用主机的局域网 IP(例如 192.168.1.100),端口是 OAP 的 gRPC 端口 11800。

3. 触发请求并查看链路

访问应用的某个接口(比如 /api/hello),稍等几秒后回到 SkyWalking UI,在“拓扑图”或“追踪”页面应该能看到 my-test-service 的调用链信息。

高频问题与避坑说明

Q:OAP 容器启动失败,日志报“No storage provider found”

原因:存储后端配置不正确。
如果你没有 Elasticsearch,请改用 H2 测试模式:将环境变量 SW_STORAGE 改为 h2,并移除 SW_ES_USER 等 ES 相关变量。
同时给 OAP 挂载数据卷 ./oap-data:/skywalking/data 保证重启不丢数据。

Q:UI 能打开但看不到任何数据

  • 确认 Agent 的 collector.backend_service 指向的是家用主机的局域网 IP,而不是 localhost。因为容器内部与 Agent 不在同一网络命名空间。
  • 检查家用主机的防火墙是否放通了 11800 端口(gRPC)。
  • 等待约 10 秒,让 OAP 完成数据处理流程。

Q:家用主机重启后 SkyWalking 数据丢失

避坑方法:在 docker-compose.yml 中已经为 OAP 挂载了 ./oap-data:/skywalking/data 卷(H2 模式)或者确保 Elasticsearch 数据持久化。
如果使用 ES,也请为 ES 容器配置持久化卷。

Q:端口被占用或路由器映射问题

家用主机通常通过路由器上网,如果希望外网访问 UI,需要在路由器上做端口映射(不推荐暴露管理界面向公网)。
建议仅在内网使用。

总结

通过以上步骤,你已经在家里的一台 Linux 主机上成功运行了 SkyWalking 链路追踪系统。
你可以将线上微服务或实验项目的 Agent 指向这台机器,就能免费获得一套分布式的调用链监控。
后续如果需要调整存储(比如改用 ES 集群),只需修改 docker-compose.yml 的环境变量并重启即可。

如果你在实际操作中遇到其他问题,欢迎在评论区留言,我会把常见报错更新到 FAQ 部分。

分享到:
上一篇
外贸站宝塔面板网站爬虫抓取超时Nginx调整超时
下一篇
跨境独立站宝塔面板服务器多网卡网络分流配置
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意