IoTDB 2.0.2 Standalone 完整部署流程(适配你当前环境,网段 172.24.0.0/16,全注释yml、绝对路径、对齐官方示例)
前置条件:
系统:Debian
工作根目录:/wanghao/iotdb
镜像已存在:apache/iotdb:2.0.2-standalone
已占用docker网段:172.17.0.0/16、172.18.0.0/16
本次选用空闲网段:172.24.0.0/16,网关172.24.0.1,容器固定IP172.24.0.6
步骤1:创建一级目录(conf/data/logs,无嵌套)
mkdir -p /wanghao/iotdb/conf /wanghao/iotdb/data /wanghao/iotdb/logs
步骤2:创建自定义bridge网桥(官方文档2.2)
docker network create --driver=bridge --subnet=172.24.0.0/16 --gateway=172.24.0.1 iotdb
# 校验网络是否创建成功
docker network ls | grep iotdb
步骤3:临时容器导出原版配置文件(关键!空conf挂载会启动失败)
# 启动临时容器
docker run -d --name iotdb-tmp apache/iotdb:2.0.2-standalone
# 等待30秒内部初始化
sleep 30
# 拷贝原生配置到宿主机绝对路径
docker cp iotdb-tmp:/iotdb/conf /wanghao/iotdb/conf
# 删除临时容器
docker rm -f iotdb-tmp
步骤4:写入 docker-compose-standalone.yml
文件路径:/wanghao/iotdb/docker-compose-standalone.yml
version: "3"
services:
iotdb-service:
# 镜像:apache/iotdb:2.0.2-standalone 单机1C1D版本(内置ConfigNode+DataNode)
image: apache/iotdb:2.0.2-standalone
# 容器hostname,必须和cn/dn配置地址一致,网桥内部DNS解析依赖该名称
hostname: iotdb
# 容器名称,方便docker命令操作
container_name: iotdb
# 重启策略:异常崩溃自动重启;手动down停止不会自动拉起
restart: always
ports:
- "6667:6667" # DataNode对外RPC端口,SDK、CLI客户端连接核心端口
- "18080:18080" # 额外开启REST HTTP服务端口,用于接口调试、Swagger文档
environment:
###########################################################################
# ConfigNode 集群寻址 & Raft共识配置(官方原版示例配置,单机1C1D必须显式声明)
###########################################################################
- cn_internal_address=iotdb # ConfigNode内部通信绑定地址,填容器hostname
- cn_internal_port=10710 # ConfigNode内部通信端口
- cn_consensus_port=10720 # ConfigNode Raft共识端口,用于元数据选举、同步
- cn_seed_config_node=iotdb:10710 # 种子ConfigNode节点地址,单机指向自身
###########################################################################
# DataNode 集群寻址、数据交换、分片共识配置(官方原版示例)
###########################################################################
- dn_rpc_address=iotdb # DataNode RPC服务内部地址
- dn_internal_address=iotdb # DataNode内部通信地址
- dn_rpc_port=6667 # DataNode对外RPC端口,和ports映射保持一致
- dn_internal_port=10730 # DataNode内部通信端口
- dn_mpp_data_exchange_port=10740 # MPP分布式查询,节点之间数据交换端口
- dn_schema_region_consensus_port=10750 # Schema元数据分片Raft共识端口
- dn_data_region_consensus_port=10760 # 时序数据分片Raft共识端口
- dn_seed_config_node=iotdb:10710 # DataNode启动时连接的ConfigNode种子地址
###########################################################################
# 调试增强配置(官方基础示例不含,为SDK、接口测试增加)
###########################################################################
- enable_rest_service=true # 开启RESTful http接口服务
- rest_service_port=18080 # REST服务监听端口,和端口映射保持一致
- enable_swagger=true # 开启Swagger在线接口文档,调试使用;生产环境关闭
- cn_rpc_max_concurrent_client_num=100 # ConfigNode RPC最大客户端并发数,测试环境放大
- dn_rpc_max_concurrent_client_num=100 # DataNode RPC最大客户端并发数
- dn_write_mem_table_size=134217728 # 写内存表大小 128MB,内存不足可下调
- dn_log_level=INFO # 日志级别:TRACE/DEBUG/INFO/WARN/ERROR,排错可改为DEBUG
# privileged: true 特权容器
# 规避内核参数、文件句柄、内存映射、页缓存相关的奇怪权限问题,官方示例保守方案
privileged: true
# 持久化挂载,全部绝对路径,无嵌套子目录
volumes:
- /wanghao/iotdb/conf:/iotdb/conf # 配置目录,宿主机直接修改iotdb-system.properties,修改后重启生效
- /wanghao/iotdb/data:/iotdb/data # 时序数据持久化目录,所有测点数据存储位置
- /wanghao/iotdb/logs:/iotdb/logs # 运行日志目录,排查启动报错、运行异常
# 接入预先创建的iotdb网桥,固定静态IP
networks:
iotdb:
ipv4_address: 172.24.0.6
# 官方注释:容器nofile句柄上限极高时,会卡在【Checking whether the ports are already occupied...】
# 长时间卡在这一行,再取消注释开启下面句柄限制
# ulimits:
# nofile:
# soft: 1048576
# hard: 1048576
# 网络声明:该网络为外部提前手动创建,compose不负责新建
networks:
iotdb:
external: true
写入命令:
nano /wanghao/iotdb/docker-compose-standalone.yml
粘贴内容,Ctrl+O 保存,Ctrl+X 退出
步骤5:启动IoTDB服务
docker compose -f /wanghao/iotdb/docker-compose-standalone.yml up -d
步骤6:查看启动日志,等待成功标志
docker logs -f iotdb
✅ 成功标记日志:IoTDB has started successfully
首次启动约30~40秒,不要立刻连接测试
步骤7:官方文档2.5 验证部署
7.1 进入内置CLI客户端
docker exec -it iotdb /iotdb/sbin/start-cli.sh -h 127.0.0.1
CLI内执行SQL:
show cluster;
show databases;
7.2 REST接口连通测试
curl -X POST [http://127.0.0.1:18080/rest/v2/ping](http://127.0.0.1:18080/rest/v2/ping)
正常返回 true
7.3 Swagger页面
浏览器访问:http://你的debian机器IP:18080/swagger-ui/index.html
配套运维命令(全部全路径,任意位置执行)
# 停止服务,数据保留
docker compose -f /wanghao/iotdb/docker-compose-standalone.yml down
# 停止服务 + 清空持久化数据(测试重置,谨慎使用)
docker compose -f /wanghao/iotdb/docker-compose-standalone.yml down -v
# 修改配置文件后,单独重启iotdb
docker compose -f /wanghao/iotdb/docker-compose-standalone.yml restart iotdb
# 查看实时日志
docker logs -f iotdb
⚠️ 重要注意事项
- 内部端口
10710/10720/10730/10740/10750/10760仅网桥内部容器互通,不需要映射宿主机 - 优先级:环境变量 > 挂载的
iotdb-system.properties,如果想完全使用配置文件控制,删除yml里整个environment:块 - 固定IP:
172.24.0.6,同网桥其他容器可以通过这个IP访问IoTDB - 账号默认:root / root,测试环境使用,生产务必修改密码
- 后续扩容集群:只需要新增节点,修改
cn_seed_config_node、dn_seed_config_node即可,这套配置体系兼容集群
排错快速检查
- 启动超时卡住:打开ulimits句柄配置
- 端口占用:检查6667、18080是否被其他程序占用
- 权限报错:测试环境临时
chmod 777 /wanghao/iotdb/*