不借助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
    
相关推荐
Mr.亮先生2 小时前
# 把 DeepSeek 官方 Agent 工作台,直接装进 Windows 启动器里
windows·deepseek·harness
core5125 小时前
如何从多架构 Docker 镜像中导出指定的 ARM64 版本
华为·docker·架构·镜像·导出·多架构
雪碧聊技术5 小时前
使用Docker,将fastApi项目部署到linux服务器
服务器·docker·fastapi·docker部署fastapi
我有2只猫5 小时前
vLLM Docker 本地部署小模型
docker·容器·vllm
腾讯数据架构师6 小时前
壁仞 GPU 怎么接入 Kubernetes 和 AI 平台?CubeStudio 壁仞算力适配实操
人工智能·容器·kubernetes·cube-studio·ai平台
有脚就行6 小时前
第28篇-Kubernetes-GPU调度机制-Device-Plugin与GPU-Operator
人工智能·容器
Oo9206 小时前
Docker 入门:把应用和运行环境一起打包
docker
曹牧6 小时前
C#:List<string>特定格式输出
windows·c#
易点云徐源8 小时前
(已解决)Photoshop 多画板 Alt+拖动复制随机卡死 4~5 分钟
windows·photoshop
梦梦代码精8 小时前
用开源BuildingAI打造C端AI助手,内置写作/绘画/长文/漫剧,商业化模块全预制
docker·ai·ai作画·开源·代码规范