跳转至

使用 Docker Compose 部署 Nebula Graph

使用 Docker Compose 可以基于准备好的配置文件快速部署 Nebula Graph 服务,仅建议在测试 Nebula Graph 功能时使用该方式。

前提条件

  • 启动主机上的 Docker 服务。
  • 如果已经通过 Docker Compose 在主机上部署了另一个版本的 Nebula Graph,为避免兼容性问题,需要删除目录nebula-docker-compose/data

部署和连接 Nebula Graph

  1. 通过 Git 克隆nebula-docker-compose仓库的3.0.1分支到主机。

    Danger

    master分支包含最新的未测试代码。请不要在生产环境使用此版本。

    bash $ git clone -b v3.0.1 https://github.com/vesoft-inc/nebula-docker-compose.git

  2. 切换至目录nebula-docker-compose

    bash $ cd nebula-docker-compose/

  3. 执行如下命令启动 Nebula Graph 服务。

    从 3.0.2 开始,Nebula Graph 在 Docker Hub 上的 Docker 支持 ARM64 架构。用户可以在 ARM macOS 的 Docker Desktop 上或者 ARM Linux Server 上运行容器化的 Nebula Graph。

    Note

    如果长期未更新镜像,请先更新 Nebula Graph 镜像Nebula Console 镜像

    bash [nebula-docker-compose]$ docker-compose up -d Creating nebula-docker-compose_metad0_1 ... done Creating nebula-docker-compose_metad2_1 ... done Creating nebula-docker-compose_metad1_1 ... done Creating nebula-docker-compose_graphd2_1 ... done Creating nebula-docker-compose_graphd_1 ... done Creating nebula-docker-compose_graphd1_1 ... done Creating nebula-docker-compose_storaged0_1 ... done Creating nebula-docker-compose_storaged2_1 ... done Creating nebula-docker-compose_storaged1_1 ... done

    Note

    上述服务的更多信息,请参见架构总览

  4. 连接 Nebula Graph。

    1. 使用 Nebula Console 镜像启动一个容器,并连接到 Nebula Graph 服务所在的网络(nebula-docker-compose_nebula-net)中。

      bash $ docker run --rm -ti --network nebula-docker-compose_nebula-net --entrypoint=/bin/sh vesoft/nebula-console:v3.0.0

      Note

      本地网络可能和示例中的nebula-docker-compose_nebula-net不同,请使用如下命令查看。

      bash $ docker network ls NETWORK ID NAME DRIVER SCOPE a74c312b1d16 bridge bridge local dbfa82505f0e host host local ed55ccf356ae nebula-docker-compose_nebula-net bridge local 93ba48b4b288 none null local

    2. 通过 Nebula Console 连接 Nebula Graph。

      bash docker> nebula-console -u <user_name> -p <password> --address=graphd --port=9669

      Note

      默认情况下,身份认证功能是关闭的,只能使用已存在的用户名(默认为root)和任意密码登录。如果想使用身份认证,请参见身份认证

    3. 执行如下命令将 nebula-storaged 进程增加为可用状态。

      ```bash nebula> ADD HOSTS "storaged0":9779,"storaged1":9779,"storaged2":9779;

      nebula> SHOW HOSTS; +-------------+------+----------+--------------+----------------------+------------------------+---------+ | Host | Port | Status | Leader count | Leader distribution | Partition distribution | Version | +-------------+------+----------+--------------+----------------------+------------------------+---------+ | "storaged0" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.0.1" | | "storaged1" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.0.1" | | "storaged2" | 9779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.0.1" | +-------------+------+----------+--------------+----------------------+------------------------+---------+ ```

      Note

      从 3.0 开始,上报到 metad 的 nebula-storaged 服务需要人为 ADD HOSTS 之后才可以被使用。

  5. 执行两次exit可以退出容器。

查看 Nebula Graph 服务的状态和端口

执行命令docker-compose ps可以列出 Nebula Graph 服务的状态和端口。

```bash $ docker-compose ps Name Command State Ports


nebula-docker-compose_graphd1_1 ./bin/nebula-graphd --flag ... Up (health: starting) 13000/tcp, 13002/tcp, 0.0.0.0:33295->19669/tcp, 0.0.0.0:33291->19670/tcp, 3699/tcp, 0.0.0.0:33298->9669/tcp nebula-docker-compose_graphd2_1 ./bin/nebula-graphd --flag ... Up (health: starting) 13000/tcp, 13002/tcp, 0.0.0.0:33285->19669/tcp, 0.0.0.0:33284->19670/tcp, 3699/tcp, 0.0.0.0:33286->9669/tcp nebula-docker-compose_graphd_1 ./bin/nebula-graphd --flag ... Up (health: starting) 13000/tcp, 13002/tcp, 0.0.0.0:33288->19669/tcp, 0.0.0.0:33287->19670/tcp, 3699/tcp, 0.0.0.0:9669->9669/tcp nebula-docker-compose_metad0_1 ./bin/nebula-metad --flagf ... Up (health: starting) 11000/tcp, 11002/tcp, 0.0.0.0:33276->19559/tcp, 0.0.0.0:33275->19560/tcp, 45500/tcp, 45501/tcp, 0.0.0.0:33278->9559/tcp nebula-docker-compose_metad1_1 ./bin/nebula-metad --flagf ... Up (health: starting) 11000/tcp, 11002/tcp, 0.0.0.0:33279->19559/tcp, 0.0.0.0:33277->19560/tcp, 45500/tcp, 45501/tcp, 0.0.0.0:33281->9559/tcp nebula-docker-compose_metad2_1 ./bin/nebula-metad --flagf ... Up (health: starting) 11000/tcp, 11002/tcp, 0.0.0.0:33282->19559/tcp, 0.0.0.0:33280->19560/tcp, 45500/tcp, 45501/tcp, 0.0.0.0:33283->9559/tcp nebula-docker-compose_storaged0_1 ./bin/nebula-storaged --fl ... Up (health: starting) 12000/tcp, 12002/tcp, 0.0.0.0:33290->19779/tcp, 0.0.0.0:33289->19780/tcp, 44500/tcp, 44501/tcp, 0.0.0.0:33294->9779/tcp nebula-docker-compose_storaged1_1 ./bin/nebula-storaged --fl ... Up (health: starting) 12000/tcp, 12002/tcp, 0.0.0.0:33296->19779/tcp, 0.0.0.0:33292->19780/tcp, 44500/tcp, 44501/tcp, 0.0.0.0:33299->9779/tcp nebula-docker-compose_storaged2_1 ./bin/nebula-storaged --fl ... Up (health: starting) 12000/tcp, 12002/tcp, 0.0.0.0:33297->19779/tcp, 0.0.0.0:33293->19780/tcp, 44500/tcp, 44501/tcp, 0.0.0.0:33300->9779/tcp ```

Nebula Graph 默认使用9669端口为客户端提供服务,如果需要修改端口,请修改目录nebula-docker-compose内的文件docker-compose.yaml,然后重启 Nebula Graph 服务。

查看 Nebula Graph 服务的数据和日志

Nebula Graph 的所有数据和日志都持久化存储在nebula-docker-compose/datanebula-docker-compose/logs目录中。

目录的结构如下:

text nebula-docker-compose/ |-- docker-compose.yaml ├── data │   ├── meta0 │   ├── meta1 │   ├── meta2 │   ├── storage0 │   ├── storage1 │   └── storage2 └── logs ├── graph ├── graph1 ├── graph2 ├── meta0 ├── meta1 ├── meta2 ├── storage0 ├── storage1 └── storage2

停止 Nebula Graph 服务

用户可以执行如下命令停止 Nebula Graph 服务:

bash $ docker-compose down

如果返回如下信息,表示已经成功停止服务。

bash Stopping nebula-docker-compose_graphd2_1 ... done Stopping nebula-docker-compose_graphd1_1 ... done Stopping nebula-docker-compose_graphd_1 ... done Stopping nebula-docker-compose_storaged1_1 ... done Stopping nebula-docker-compose_storaged2_1 ... done Stopping nebula-docker-compose_storaged0_1 ... done Stopping nebula-docker-compose_metad0_1 ... done Stopping nebula-docker-compose_metad1_1 ... done Stopping nebula-docker-compose_metad2_1 ... done Removing nebula-docker-compose_graphd2_1 ... done Removing nebula-docker-compose_graphd1_1 ... done Removing nebula-docker-compose_graphd_1 ... done Removing nebula-docker-compose_storaged1_1 ... done Removing nebula-docker-compose_storaged2_1 ... done Removing nebula-docker-compose_storaged0_1 ... done Removing nebula-docker-compose_metad0_1 ... done Removing nebula-docker-compose_metad1_1 ... done Removing nebula-docker-compose_metad2_1 ... done Removing network nebula-docker-compose_nebula-net

Danger

命令docker-compose down -v的参数-v将会删除所有本地的数据。如果使用的是 nightly 版本,并且有一些兼容性问题,请尝试这个命令。

修改配置

Docker Compose 部署的 Nebula Graph,配置文件位置为nebula-docker-compose/docker-compose.yaml,修改该文件内的配置并重启服务即可使新配置生效。

具体的配置说明请参见配置管理

常见问题

如何固定 Docker 映射到外部的端口?

在目录nebula-docker-compose内修改文件docker-compose.yaml,将对应服务的ports设置为固定映射,例如:

bash graphd: image: vesoft/nebula-graphd:v3.0.2 ... ports: - 9669:9669 - 19669 - 19670

9669:9669表示内部的 9669 映射到外部的端口也是 9669,下方的19669表示内部的 19669 映射到外部的端口是随机的。

如何升级/更新 Nebula Graph 服务的 Docker 镜像?

  1. 在文件nebula-docker-compose/docker-compose.yaml中,找到所有服务的image并修改其值为相应的镜像版本。

  2. 在目录nebula-docker-compose内执行命令docker-compose pull,更新 Graph 服务、Storage 服务和 Meta 服务的镜像。

  3. 执行命令docker-compose up -d启动 Nebula Graph 服务。

  4. 通过 Nebula Console 连接 Nebula Graph 后,分别执行命令SHOW HOSTS GRAPHSHOW HOSTS STORAGESHOW HOSTS META查看各服务版本。

执行命令docker-compose pull报错ERROR: toomanyrequests

可能遇到如下错误:

ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

以上错误表示已达到 Docker Hub 的速率限制。解决方案请参见 Understanding Docker Hub Rate Limiting

如何更新 Nebula Console?

执行如下命令可以更新 Nebula Console 客户端镜像。

bash docker pull vesoft/nebula-console:v3.0.0

为什么更新 nebula-docker-compose 仓库(Nebula Graph 2.0.0-RC)后,无法通过端口3699连接 Nebula Graph?

从 Nebula Graph 2.0.0-RC 版本开始,默认端口从3699改为9669。请使用9669端口连接,或修改配置文件docker-compose.yaml内的端口。

为什么更新 nebula-docker-compose 仓库后,无法访问数据?(2021 年 01 月 04 日)

如果在 2021 年 01 月 04 日后更新过 nebula-docker-compose 仓库,而且之前已经有数据,请修改文件docker-compose.yaml,将端口修改为之前使用的端口。详情请参见修改默认端口

为什么更新 nebula-docker-compose 仓库后,无法访问数据?(2021 年 01 月 27 日)

2021 年 01 月 27 日修改了数据格式,无法兼容之前的数据,请执行命令docker-compose down -v删除所有本地数据。


最后更新: 2026年8月17日