分布式链路追踪系统之docker-compose安装skywalking

环境准备

安装docker docker-compose

更新 安装依赖

BASH 复制代码
root@skywalking-docker-compose:~# apt update
root@skywalking-docker-compose:~# apt install -y ca-certificates curl gnupg lsb-release

添加Docker的GPG公钥

BASH 复制代码
root@skywalking-docker-compose:~# install -m 0755 -d /etc/apt/keyrings
root@skywalking-docker-compose:~# curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
root@skywalking-docker-compose:~# chmod a+r /etc/apt/keyrings/docker.gpg

更新源

BASH 复制代码
root@skywalking-docker-compose:~# echo \
>   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
>   "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
>   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
root@skywalking-docker-compose:~# cat /etc/apt/sources.list.d/docker.list 
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu   jammy stable

安装docker docker-compose

BASH 复制代码
apt install docker-ce  docker-compose -y

验证docker 、docker-compose

BASH 复制代码
root@skywalking-docker-compose:~# docker version
Client: Docker Engine - Community
 Version:           29.6.2
 API version:       1.55
 Go version:        go1.26.5
 Git commit:        dfc4efb
 Built:             Thu Jul 16 16:12:23 2026
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.6.2
  API version:      1.55 (minimum version 1.40)
  Go version:       go1.26.5
  Git commit:       3d80467
  Built:            Thu Jul 16 16:12:23 2026
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.6
  GitCommit:        11ce9d5f3c68c941867e82890e93e815c1304f1b
 runc:
  Version:          1.3.6
  GitCommit:        v1.3.6-0-g491b69ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
root@skywalking-docker-compose:~# docker-compose version
docker-compose version 1.29.2, build unknown
docker-py version: 5.0.3
CPython version: 3.10.6
OpenSSL version: OpenSSL 3.0.2 15 Mar 2022
root@skywalking-docker-compose:~# 

创建项目目录

BASH 复制代码
root@skywalking-docker-compose:~# cd /usr/local/src/
root@skywalking-docker-compose:/usr/local/src# mkdir skywalking-compose
root@skywalking-docker-compose:/usr/local/src# cd skywalking-compose
root@skywalking-docker-compose:/usr/local/src/skywalking-compose#

编写部署清单

BASH 复制代码
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# cat docker-compose.yml
version: "3"

services:
    elasticsearch:
        image: harbor-server.ilinux.io/skywalking/elasticsearch:8.4.2
        container_name: elasticsearch
        ports:
        - "9200:9200"
        healthcheck:
            test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"] 
            interval: 60s 
            timeout: 10s
            retries: 3
            start_period: 60s 
        environment:
            discovery.type: single-node 
            ingest.geoip.downloader.enabled: "false"
            bootstrap.memory_lock: "true"
            ES_JAVA_OPTS: "-Xms512m -Xmx512m"
            TZ: "Asia/Shanghai"
            xpack.security.enabled: "false" 
        ulimits:
            memlock:
                soft: -1
                hard: -1

    skywalking-oap:
        image: harbor-server.ilinux.io/skywalking/apache/skywalking-oap-server:9.3.0
        container_name: skywalking-oap
        depends_on:
            elasticsearch:
                condition: service_healthy
        links:
        - elasticsearch
        environment:
            SW_HEALTH_CHECKER: default
            SW_STORAGE: elasticsearch
            SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
            JAVA_OPTS: "-Xms2048m -Xmx2048m"
            TZ: Asia/Shanghai
            SW_TELEMETRY: prometheus
        healthcheck:
            test: ["CMD-SHELL", "/skywalking/bin/swctl ch"]
            interval: 30s
            timeout: 10s
            retries: 3
            start_period: 10s
        restart: on-failure
        ports:
            - "11800:11800"
            - "12800:12800"

    skywalking-ui:
        image: harbor-server.ilinux.io/skywalking/apache/skywalking-ui:9.3.0
        depends_on:
            skywalking-oap:
                condition: service_healthy
        links:
        - skywalking-oap
        ports:
            - "8080:8080"
        environment:
            SW_OAP_ADDRESS: http://skywalking-oap:12800
            SW_HEALTH_CHECKER: default
            TZ: Asia/Shanghai
        healthcheck:
            test: ["CMD-SHELL", "curl -sf http://localhost:8080 || exit 1"] 
            interval: 60s 
            timeout: 10s
            retries: 3
            start_period: 60s 
root@skywalking-docker-compose:/usr/local/src/skywalking-compose#

由于现在docker官方仓库在国内基本无法访问,上面的镜像是使用本地自己搭建harbor仓库存放的镜像;有关harbor仓库的搭建可以参考本人博客https://www.cnblogs.com/qiuhom-1874/p/13061984.html

启动项目部署清单

bash 复制代码
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# docker-compose up -d  
Creating network "skywalking-compose_default" with the default driver
Pulling elasticsearch (harbor-server.ilinux.io/skywalking/elasticsearch:8.4.2)...
ERROR: failed to resolve reference "harbor-server.ilinux.io/skywalking/elasticsearch:8.4.2": failed to do request: Head "https://harbor-server.ilinux.io/v2/skywalking/elasticsearch/manifests/8.4.2": dial tcp 192.168.112.111:443: connect: connection refused
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# 

启动出现上述错误是我使用的私有仓库,没有提供https,默认docker会认为我们使用的私有仓库是安全的,所以使用https访问,解决办法告诉docker 私有仓库是不安全的仓库,使用非https访问,如下

在/etc/docker/daemon.json文件中用insecure-registries来配置非安全的仓库,后面是一个列表,可以跟多个仓库地址,用逗号隔开即可;

加载docker配置文件,重启docker

BASH 复制代码
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# systemctl daemon-reload
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# systemctl restart docker

启动docker-compose

BASH 复制代码
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# docker-compose up -d
Pulling elasticsearch (harbor-server.ilinux.io/skywalking/elasticsearch:8.4.2)...
8.4.2: Pulling from skywalking/elasticsearch
713e6bb53405: Pull complete
8e1d640ddcb9: Pull complete
675920708c8b: Pull complete
4ce1c159ba1b: Pull complete
838df58225af: Pull complete
20fe1ad733fe: Pull complete
6dd4ae51eecd: Pull complete
09e1c6584446: Pull complete
355bd4dfc6f0: Pull complete
Digest: sha256:44abebecec5c88e5cc9f40e720358903610b3835a8b4db501d69d1d2fcf94648
Status: Downloaded newer image for harbor-server.ilinux.io/skywalking/elasticsearch:8.4.2
Pulling skywalking-oap (harbor-server.ilinux.io/skywalking/apache/skywalking-oap-server:9.3.0)...
9.3.0: Pulling from skywalking/apache/skywalking-oap-server
7ffda9c68111: Pull complete
8226a2ee5818: Pull complete
4ced2591451d: Pull complete
111b6c748642: Pull complete
fa328ff46047: Pull complete
5cb275601c3a: Pull complete
df8f874ae8c0: Pull complete
e7b94896debc: Pull complete
e0f93d05989f: Pull complete
e96e057aae67: Pull complete
a373ef37d4c6: Pull complete
Digest: sha256:d31390947d06f7fda7bf16a2fc3ea15992ad6ab39b9b902225464c7e036a998b
Status: Downloaded newer image for harbor-server.ilinux.io/skywalking/apache/skywalking-oap-server:9.3.0
Pulling skywalking-ui (harbor-server.ilinux.io/skywalking/apache/skywalking-ui:9.3.0)...
9.3.0: Pulling from skywalking/apache/skywalking-ui
3d5164883dbb: Pull complete
223af88a0e24: Pull complete
e41d53e5a442: Pull complete
5784c2c8bf5f: Pull complete
c99978fd3ba9: Pull complete
Digest: sha256:069f8f4fda0a510bdca4922b356bcdfdb431b33d2c540eb64c54e6e413cc55b4
Status: Downloaded newer image for harbor-server.ilinux.io/skywalking/apache/skywalking-ui:9.3.0
Creating elasticsearch ... done
Creating skywalking-oap ... done
Creating skywalking-compose_skywalking-ui_1 ... done
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# ss -tnl
State               Recv-Q              Send-Q                           Local Address:Port                            Peer Address:Port              Process              
LISTEN              0                   4096                                   0.0.0.0:8080                                 0.0.0.0:*                                      
LISTEN              0                   4096                                   0.0.0.0:9200                                 0.0.0.0:*                                      
LISTEN              0                   4096                             127.0.0.53%lo:53                                   0.0.0.0:*                                      
LISTEN              0                   128                                    0.0.0.0:22                                   0.0.0.0:*                                      
LISTEN              0                   4096                                   0.0.0.0:11800                                0.0.0.0:*                                      
LISTEN              0                   4096                                   0.0.0.0:12800                                0.0.0.0:*                                      
LISTEN              0                   4096                                      [::]:8080                                    [::]:*                                      
LISTEN              0                   4096                                      [::]:9200                                    [::]:*                                      
LISTEN              0                   4096                                      [::]:11800                                   [::]:*                                      
LISTEN              0                   4096                                      [::]:12800                                   [::]:*                                      
root@skywalking-docker-compose:/usr/local/src/skywalking-compose# 

没有报错,对应服务的端口都处于正常监听状态,则表示服务启动成功;

验证elasticsearch 数据

能够正常用浏览器访问服务器的9200端口并打印出数据,表示elasticsearch部署成功;

验证skywalking web

能够正常用浏览器访问服务器的8080端口,说明skywalking部署成功;以上就是基于docker-compose部署skywalking的全部过程;

相关推荐
隔窗听雨眠7 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
Hui Baby8 小时前
K8S使用CRD和控制器简单应用
云原生·容器·kubernetes
阿里云云原生9 小时前
从“告警驱动”到“巡检驱动”:Agent 智能体如何实现前端体验治理的闭环?
云原生
AOwhisky10 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
AOwhisky11 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
流烟默12 小时前
SpringBoot应用链路追踪 traceId 技术方案
spring boot·skywalking·traceid
云烟成雨TD15 小时前
Micrometer 系列【2】可观测性:指标(Metrics)
java·云原生·micrometer
运维老郭15 小时前
Ubuntu下编译安装Redis:从0到1可用的完整指南
运维·云原生
Linux-18741 天前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控