部署 NineData 社区版
本文指导如何通过 Docker 容器化部署 NineData 社区版。
前提条件
- 服务器中已安装 Docker。
- 服务器架构为 Intel x86_64,规格至少为 4 核 CPU / 16 GB 内存 / 200 GB 磁盘空间。
操作步骤
登录服务器的命令行窗口,执行如下命令:
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 元数据库,请参见(可选)使用外部元数据库。
容器启动完成后,NineData 服务会自动在容器内部署并初始化服务,该过程预计需要 5 ~ 10 分钟。通过
docker logs -f ninedata
命令可以查看初始化进度,等待屏幕中打印出如下提示,即代表 NineData 服务已经顺利启动。提示如果在步骤一中指定了其他容器名称,则需要把上述命令中的
ninedata
更换成您实际的容器名。在浏览器中输入 NineData 的连接地址即可打开 NineData 控制台的登录页,NineData 服务默认端口号为
9999
,初始管理员账号与密码均为admin
。首次登录后页面会弹出修改密码窗口,请立即更改管理员密码。
附录: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
目录。 - 解决方法:需清除前次部署目录后按照本文档重新执行部署步骤。
- 可能原因:此次部署可能并不是第一次部署,前次部署用于存放 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
- 可能原因:较新的 Linux 发行版默认启用 CGroup v2,Docker 如果尝试创建子 CGroup 将会触发
- 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
- 可能原因:权限或容器配置问题,容器可能未以特权模式运行,或未挂载宿主机