不借助docker desktop 本地windows安装nabula

前言

仅记录学习过程,有问题欢迎讨论

docker desktop是付费软件,公司不让用,所以在网上搜寻了一圈替代方法。找到以下方式可以成功在本地搭建nabula3个服务。记录一下。

步骤1

步骤2

  • 然后去网上下载nebula-docker-compose-master和nebula-graph的安装包.
  • 印象中nebula-docker-compose是从github直接下载的,我放了一个资源可以自己下载下载和解压放在D盘下自己命名的nebulaGraph下
  • 之后就是解压然后修改docker-componse的配置。
  • 这里配置了下载nebula3个服务的路径,但是国内得搭建梯子才可以下载,我下面贴出我的配置,也是调整了好久才搭建成功。(见下方)

步骤3

sh 复制代码
# 1. 停止所有服务
docker compose down

# 2. 删除旧数据(必须!因为之前的错误注册信息已污染元数据)
docker volume rm nebula-docker-compose_metad-data nebula-docker-compose_metad-logs nebula-docker-compose_storaged-data nebula-docker-compose_storaged-logs nebula-docker-compose_graphd-data nebula-docker-compose_graphd-logs

# 3. 启动所有服务
docker compose up -d

# 4. 等待 60 秒(让 healthcheck 确保 metad 完全就绪)
Start-Sleep -Seconds 60

# 5. 验证端口绑定(现在必须有输出)
docker exec nebula-metad netstat -tln | findstr "9559"
# 或
docker exec nebula-metad ss -tln | findstr "9559"

# 6. 添加 storage 节点
$IP = docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nebula-storaged
docker compose exec -it console /usr/local/bin/nebula-console -addr graphd -port 9669 -u root -p nebula -e "ADD HOSTS ${IP}:9779;"

# 7. 等待 10 秒后验证
Start-Sleep -Seconds 10
docker compose exec -it console /usr/local/bin/nebula-console -addr graphd -port 9669 -u root -p nebula -e "SHOW HOSTS;"
  • 需要注意的是第一次启动,需要手动注册storaged服务注册到metad服务中去,参考5-7步。(这一步卡了很久,目前我采用的是固定ip方式)

步骤4

  • 启动成功进入网址:http://localhost:7001

    主机(Host):localhost

    端口(Port):9669

    用户名(Username):root

    密码(Password):nebula

  • 如果可以进入代表nebula服务没有问题,可以开心玩耍啦。如果无法进入报错,就需要一个个服务看docker日志去排查了,顺序为meta的到storage到graph服务。

  • 如果localhost进不去,可能得看下自己本机的IP地址 用ifconfig命令看wsl的firewall ip地址(下图)。

  • 提供我这个3.8版本的目录查看日志命令:

sh 复制代码
# 看日志 docker compose logs storaged
 docker exec nebula-storaged tail -n 30 /usr/local/nebula/logs/nebula-storaged.ERROR
 
 docker exec nebula-storaged tail -n 30 /usr/local/nebula/logs/nebula-storaged.INFO | Select-String "Using"
 
 docker exec nebula-metad tail -n 20 /usr/local/nebula/logs/nebula-metad.INFO
 docker exec nebula-graphd tail -n 20 /usr/local/nebula/logs/nebula-graphd.INFO

docker-compose.yml

yaml 复制代码
volumes:
  metad-data:    # metad 数据卷
  metad-logs:    # metad 日志卷
  storaged-data: # storaged 数据卷
  storaged-logs: # storaged 日志卷
  graphd-data:   # graphd 数据卷
  graphd-logs:   # graphd 日志卷

services:
  metad:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vesoft/nebula-metad:v3.8.0
    container_name: nebula-metad
    restart: always
    volumes:
      - metad-data:/usr/local/nebula/data
      - metad-logs:/usr/local/nebula/logs
    command:
      - /usr/local/nebula/bin/nebula-metad
      - --meta_server_addrs=172.18.0.10:9559
      - --local_ip=172.18.0.10  # 关键:改为容器名,允许外部连接
      - --ws_ip=0.0.0.0
      - --port=9559
      - --ws_http_port=19559
      - --log_dir=/usr/local/nebula/logs
      - --v=1
    # 关键:添加 healthcheck,确保完全就绪后再接受依赖
    healthcheck:
      test: ["CMD", "bash", "-c", "timeout 2 bash -c 'cat < /dev/null > /dev/tcp/localhost/9559'"]
      interval: 10s
      timeout: 5s
      retries: 6
      start_period: 30s  # 给 metad 30 秒初始化时间
    networks:
      nebula-net:
        ipv4_address: 172.18.0.10

  storaged:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vesoft/nebula-storaged:v3.8.0
    container_name: nebula-storaged
    restart: always
    volumes:
      - storaged-data:/usr/local/nebula/data
      - storaged-logs:/usr/local/nebula/logs
    command:
      - /usr/local/nebula/bin/nebula-storaged
      - --meta_server_addrs=172.18.0.10:9559
      - --local_ip=172.18.0.11  
      - --ws_ip=0.0.0.0
      - --port=9779
      - --ws_http_port=19779
      - --log_dir=/usr/local/nebula/logs
      - --v=1
    depends_on:
      metad:
        condition: service_healthy
    networks:
      nebula-net:
        ipv4_address: 172.18.0.11

  graphd:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vesoft/nebula-graphd:v3.8.0
    container_name: nebula-graphd
    restart: on-failure:3  # 修正:失败后重启3次,避免无限循环
    ports:
      - "9669:9669"
    volumes:
      - graphd-data:/usr/local/nebula/data
      - graphd-logs:/usr/local/nebula/logs
    command:
      - /usr/local/nebula/bin/nebula-graphd
      - --meta_server_addrs=metad:9559  # 指向metad服务
      - --local_ip=172.18.0.12               # 节点通信地址为服务名
      - --port=9669                     # graph客户端查询端口
      - --log_dir=/usr/local/nebula/logs
      - --stderrthreshold=0
      - --v=1
      - --minloglevel=0
    depends_on:
      metad:
        condition: service_healthy  # 新增
      storaged:
        condition: service_started  # 可以等待storaged启动
    networks:
      nebula-net:
        ipv4_address: 172.18.0.12

  studio:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vesoft/nebula-graph-studio:v3.10.0
    container_name: nebula-studio
    restart: always
    ports:
      - "7001:7001"
    environment:
      - NEBULA_SERVER_ADDRESS=172.18.0.12:9669
    depends_on:
      - graphd
    networks:
      - nebula-net
  console:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/vesoft/nebula-console:v3.8.0
    container_name: nebula-console
    entrypoint: sleep
    command: infinity  # 保持容器一直运行
    depends_on:
      metad:
        condition: service_healthy  # 仅在 metad 健康检查通过后启动
    networks:
      - nebula-net
      
networks:
  nebula-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/24
          gateway: 172.18.0.1
    
相关推荐
lin张1 天前
Kubernetes 核心网络方案与资源管理(一)
网络·容器·kubernetes
liulilittle1 天前
Windows WSL部署Ubuntu子系统到其它磁盘上
linux·运维·服务器·网络·windows·ubuntu·wsl
叽里咕噜怪1 天前
(二)k8s——kubeadm 部署 K8S 1.20.11 详细版
云原生·容器·kubernetes
susu10830189111 天前
docker部署 Java 项目jar
java·docker·jar
郑泰科技1 天前
fmm(快速地图匹配)实践:Boost header not found解决方案
c++·windows·交通物流
迷茫运维路1 天前
【K8S集群漏洞扫描】kube-proxy进程所监听的443端口证书过期问题分析与解决
linux·容器·kubernetes·漏洞处理
勘察加熊人1 天前
python实现批量中英文文件翻译
开发语言·windows·python
派大鑫wink1 天前
DevOps与AIOps融合:智能化运维体系构建与实战
docker·容器·kubernetes
叫致寒吧1 天前
K8s 组网方案
云原生·容器·kubernetes