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,容器固定IP 172.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

⚠️ 重要注意事项

  1. 内部端口 10710/10720/10730/10740/10750/10760 仅网桥内部容器互通,不需要映射宿主机
  2. 优先级:环境变量 > 挂载的 iotdb-system.properties,如果想完全使用配置文件控制,删除yml里整个environment:块
  3. 固定IP:172.24.0.6,同网桥其他容器可以通过这个IP访问IoTDB
  4. 账号默认:root / root,测试环境使用,生产务必修改密码
  5. 后续扩容集群:只需要新增节点,修改 cn_seed_config_node、dn_seed_config_node 即可,这套配置体系兼容集群

排错快速检查

  • 启动超时卡住:打开ulimits句柄配置
  • 端口占用:检查6667、18080是否被其他程序占用
  • 权限报错:测试环境临时 chmod 777 /wanghao/iotdb/*