跳到主要内容

部署 NineData 社区版

本文指导如何通过 Docker 容器化部署 NineData 社区版。

前提条件

  • 服务器中已安装 Docker。
  • 服务器架构为 Intel x86_64,规格至少为 4 核 CPU / 16 GB 内存 / 200 GB 磁盘空间。

操作步骤

  1. 登录服务器的命令行窗口,执行如下命令:

    docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest

    参数说明

    • -p 9999:9999:NineData 通过 9999 端口提供服务,此参数将容器的 9999 端口(冒号后)映射到服务器(冒号前),确保客户端浏览器可以直接访问到 NineData 服务。
    • --privileged:赋予容器运行和访问的系统权限。
    • -v /opt/ninedata:/u01:将服务器的 /opt/ninedata 目录挂载到容器的 /u01 目录,用于存放数据。
    • --name ninedata:设置容器名称为 ninedata,可自行指定其他容器名称。
    • -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest:NineData 的镜像地址,用于拉取 NineData 的镜像文件。
    提示
    • NineData 提供了多地域镜像下载,您可以就近选择,替换上方命令中 -d 后面的镜像地址,以获取更快的下载速度。镜像地址请参见附录
    • 本文默认使用容器中自带的 MySQL 作为元数据库,如需自行部署 MySQL 元数据库,请参见(可选)使用外部元数据库
  2. 容器启动完成后,NineData 服务会自动在容器内部署并初始化服务,该过程预计需要 5 ~ 10 分钟。通过 docker logs -f ninedata 命令可以查看初始化进度,等待屏幕中打印出如下提示,即代表 NineData 服务已经顺利启动。

    image-20250310171459303

    提示

    如果在步骤一中指定了其他容器名称,则需要把上述命令中的 ninedata 更换成您实际的容器名。

  3. 在浏览器中输入 NineData 的连接地址即可打开 NineData 控制台的登录页,NineData 服务默认端口号为 9999,初始管理员账号与密码均为 admin。首次登录后页面会弹出修改密码窗口,请立即更改管理员密码。

    image-20250310171539071

附录:NineData 社区版镜像地址列表

  • 华北-北京:swr.cn-north-4.myhuaweicloud.com/ninedata/ninedata:latest

  • 华东-上海:swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest

  • 华南-广州:swr.cn-south-1.myhuaweicloud.com/ninedata/ninedata:latest

  • NineData Docker Hub 官方地址:ninedata/ninedata:latest

常见问题

  • Q:浏览器突然无法打开社区版 NineData 控制台,提示 504 错误是什么原因?
    • 可能原因:可能是服务器磁盘不足导致。
    • 解决方法:请适当扩容磁盘空间后执行 docker restart <容器 ID>,等待约 10 分钟启动完成即可。
  • Q:执行 docker logs -f ninedata 后,屏幕出现 You can view detailed logs in the /u01/server.log 的提示,然后就卡死了,是什么原因?
    • 可能原因:此次部署可能并不是第一次部署,前次部署用于存放 NineData 文件的目录下可能有残留文件,例如 /opt/ninedata 目录。
    • 解决方法:需清除前次部署目录后按照本文档重新执行部署步骤。
  • Q:NineData 容器拉起失败,server.log 中有"Failed to start ContainerManager" err="cannot enter cgroupv2 \"/sys/fs/cgroup/kubepods\" with domain controllers -- it is in an invalid state" 报错是什么原因?
    • 可能原因:较新的 Linux 发行版默认启用 CGroup v2,Docker 如果尝试创建子 CGroup 将会触发 invalid state 错误,导致容器拉起失败。
    • 解决方法:在 Docker run 命令后面接 参数,共享使用宿主机的 CGroup 命名空间即可。例如:docker run --cgroupns=host -p 9999:9999 --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
  • Q:NineData 容器拉起失败,server.log 中有 "kube-proxy exited: iptables is not available on this host" 报错是什么原因?
    • 可能原因:权限或容器配置问题,容器可能未以特权模式运行,或未挂载宿主机 /lib/modules 目录,导致无法操作 iptables 规则。
    • 调整容器权限与配置,以特权模式运行容器:添加 --privileged 参数,赋予 NET_ADMIN 能力。例如:docker run --cap-add NET_ADMIN --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest