首页
/ Apache IoTDB Docker镜像使用指南

Apache IoTDB Docker镜像使用指南

2025-07-08 07:50:45作者:舒璇辛Bertina

一、镜像版本演进

Apache IoTDB的Docker镜像随着版本迭代经历了多次重要变更:

  1. 0.12版本前:采用单一镜像模式,命名格式为apache/iotdb:0.<主版本>.<次版本>

  2. 0.12版本起:开始区分单节点和集群模式

    • 单节点镜像:apache/iotdb:0.<主版本>.<次版本>-node
    • 集群镜像:apache/iotdb:0.<主版本>.<次版本>-cluster
  3. 1.0.0版本起:进一步细分为三种镜像类型

    • 配置节点镜像:apache/iotdb:<版本>-confignode
    • 数据节点镜像:apache/iotdb:<版本>-datanode
    • 单机版镜像:apache/iotdb:<版本>-standalone

关于latest标签:

  • 0.12版本前指向最新的0.<主版本>.<次版本>
  • 0.12版本后指向最新的0.<主版本>.<次版本>-node

二、镜像构建方法

基础构建命令

docker build -t 镜像名称:版本号 -f Dockerfile文件名

1.0.0版本构建示例

cd src/main/DockerCompose
./do-docker-build.sh -t 目标类型 -v 版本号

构建前准备

  1. 创建src/main/target目录
  2. 将官方发布的zip包放入该目录,例如:
    • apache-iotdb-1.0.0-all-bin.zip
    • apache-iotdb-1.0.0-confignode-bin.zip
    • apache-iotdb-1.0.0-datanode-bin.zip

三、服务端运行指南

单节点运行示例

docker run -d --name iotdb \
  -p 6667:6667 -p 31999:31999 \
  -p 8181:8181 -p 5555:5555 \
  apache/iotdb:<版本>

集群模式运行示例

docker run -d --name iotdb \
  -p 6667:6667 -p 31999:31999 \
  -p 8181:8181 -p 5555:5555 \
  -p 9003:9003 -p 40010:40010 \
  apache/iotdb:<版本>

端口说明

端口号 用途说明
6667 RPC通信端口
31999 JMX监控端口
8086 InfluxDB协议端口
8181 监控端口
5555 数据同步端口
9003 集群内部元数据RPC端口
40010 集群内部数据RPC端口

四、数据持久化配置

建议将数据和日志目录挂载到宿主机:

docker run -it \
  -v /宿主机/数据目录:/iotdb/data \
  -v /宿主机/日志目录:/iotdb/logs \
  --name 容器名称 \
  apache/iotdb:<版本>

实际应用示例

docker run -it \
  -v /data/iotdb_data:/iotdb/data \
  -v /var/log/iotdb:/iotdb/logs \
  --name my_iotdb \
  apache/iotdb:1.0.0-standalone

五、客户端连接指南

  1. 查找运行中的容器:
docker ps
  1. 进入容器交互模式:
docker exec -it 容器ID /bin/bash
  1. 启动CLI客户端:
  • 0.10.x及以上版本:start-cli.sh
  • 0.9.x及0.8.1版本:start-client.sh

或直接执行:

docker exec -it 容器ID start-cli.sh

六、最佳实践建议

  1. 生产环境部署

    • 务必配置数据卷挂载
    • 根据业务需求选择合适的端口映射
    • 集群模式下注意各节点间的网络连通性
  2. 资源分配

    • 建议通过--memory限制内存使用
    • 使用--cpus限制CPU资源
  3. 监控维护

    • 通过8181端口监控系统状态
    • 定期检查日志目录
  4. 版本选择

    • 新项目建议使用1.0.0+版本
    • 已有系统升级时注意版本兼容性

通过Docker部署Apache IoTDB可以快速搭建开发测试环境,生产环境建议结合Kubernetes等容器编排工具实现高可用部署。