无法以Fixed List模式运行GridDB Docker容器的问题求助
解决GridDB Docker容器Fixed List模式启动报错问题
问题现象
使用以下命令启动Fixed List模式的GridDB容器时:
docker run -dt --network="host" -e NOTIFICATION_MEMBER=1 griddb/griddb:latest
出现报错:
Fixed List mode
Execution failed. See message logs
/start-griddb.sh: line 94: exec: griddb: not found
但采用组播模式启动时完全正常。
原因分析
- Host网络模式的环境变量冲突:当使用
--network="host"时,容器直接复用宿主机的网络命名空间,可能导致容器内的PATH环境变量被宿主机覆盖,GridDB的二进制文件路径未被包含,启动脚本找不到griddb命令。 - NOTIFICATION_MEMBER参数格式错误:Fixed List模式要求该参数指定完整的
[节点IP]:[通知端口]格式,仅传入1无法被脚本正确解析,导致启动流程异常。
解决方案
方案1:放弃Host网络模式,使用端口映射+正确的节点配置
改用Docker默认桥接网络,同时指定完整的节点地址和端口映射:
docker run -dt \ -p 10001:10001 -p 10002:10002 \ -e NOTIFICATION_MODE=fixed_list \ -e NOTIFICATION_MEMBER=172.17.0.2:10001 \ griddb/griddb:latest
- 注:
172.17.0.2是容器默认桥接网络下的IP,可通过docker inspect <容器ID>查看实际IP,或通过--hostname指定自定义主机名,用主机名替代IP。
方案2:保留Host网络模式,修正环境变量与参数
如果必须使用Host网络,需要确保容器内能找到griddb命令,并传入正确的节点地址:
- 先通过组播模式启动容器,进入容器查看
griddb的实际路径:
docker exec -it <组播模式容器ID> bash which griddb # 输出类似/usr/bin/griddb
- 启动Fixed List模式时,指定
PATH环境变量并传入完整的宿主机IP+端口:
docker run -dt \ --network="host" \ -e PATH=/usr/bin:$PATH \ -e NOTIFICATION_MODE=fixed_list \ -e NOTIFICATION_MEMBER=192.168.1.100:10001 \ griddb/griddb:latest
- 替换
192.168.1.100为你的宿主机实际IP。
方案3:直接指定griddb命令的绝对路径
跳过启动脚本的路径解析,直接调用griddb的绝对路径启动:
docker run -dt \ --network="host" \ -e NOTIFICATION_MODE=fixed_list \ -e NOTIFICATION_MEMBER=192.168.1.100:10001 \ griddb/griddb:latest /usr/bin/griddb
内容的提问来源于stack exchange,提问作者Arqish Mithani
相关产品推荐
相关产品推荐

