# Docker image version definition Before v0.12, Apache IoTDB's docker image name and version format is: `apache/iotdb:0..`. From 0.12 on, we release two images: one is for a single node, and the other is for the cluster mode. The format is: `apache/iotdb:0..-node` and `apache/iotdb:0..-cluster`. From 1.0.0, we split 3 kinds of images: datanode, confignode and all of them in one image called 1C1D. The format is: `apache/iotdb:-confignode`,`apache/iotdb:-datanode` and `apache/iotdb:-standalone`. From 2.0.5, we maintain 4 images: datanode, confignode, standalone and ainode. The format is: `apache/iotdb:-datanode`, `apache/iotdb:-confignode`, `apache/iotdb:-ainode` and `apache/iotdb:-standalone` ## The definition of tag "latest" Before v0.12, the "latest" tag will forward to the largest `apache/iotdb:0..`. From 0.12 on, the "latest" tag will forward to the largest `apache/iotdb:0..-node`. # How to build docker build -t THE_DOCKER_IMAGE_NAME:THE_VERSION -f THE_DOCKER_FILE_NAME e.g., ```shell docker build -t my-iotdb: -f Dockerfile- # for 1.0.0 cd src/main/DockerCompose ./do-docker-build.sh -t -v e.g. ./do-docker-build.sh -t standalone -v 1.0.0 # for ainode, start from 2.0.5 ./do-docker-build.sh -t ainode -v 2.0.5-SNAPSHOT # for ainode, start from 2.0.8 cd src/main ./build-ainode.sh -v 2.0.8-SNAPSHOT -d /data/ainode ``` Notice: Create `src/main/target` and place the downloaded release archives there. ConfigNode, DataNode, standalone and latest images all use `apache-iotdb--all-bin.zip`; their entrypoints still start only the requested components. The separate CLI, ConfigNode and DataNode archives are no longer published. AINode uses its own archive. For example: ```shell $ ls target/ apache-iotdb-2.0.11-SNAPSHOT-all-bin.zip apache-iotdb-2.0.11-SNAPSHOT-ainode-bin.zip ``` To avoid manually copy these files, you can run our `do-docker-build.sh` with argument `-b`. # How to run IoTDB server Actually, we maintain a repo on dockerhub, so that you can get the docker image directly. For example, ```shell docker run -d --name iotdb -p 6667:6667 -p 31999:31999 -p 8181:8181 -p 5555:5555 apache/iotdb: ``` ```shell 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: ``` Since 1.0.0, see [official documents.](https://iotdb.apache.org/UserGuide/latest/QuickStart/QuickStart.html) # How to register AINode to IoTDB cluster ## Register AINode to the existing IoTDB cluster Please download `docker-compose-ainode.yml` in `docker/src/main/DockerCompose` first. After replace the correct IoTDB cluster configurations, run ```shell docker compose -f docker-compose-ainode.yml up -d ``` Start from v2.0.7, run ```shell docker run -d \ --name iotdb-ainode \ --network host \ -p 10810:10810 \ -p 8080:8080 \ -e AIN_SEED_CONFIG_NODE=127.0.0.1:10710 \ -e AIN_RPC_ADDRESS=127.0.0.1 \ -e AIN_RPC_PORT=10810 \ -e AIN_CLUSTER_INGRESS_ADDRESS=127.0.0.1 \ -e AIN_CLUSTER_INGRESS_PORT=6667 \ -e AIN_CLUSTER_INGRESS_USERNAME=root \ -e AIN_CLUSTER_INGRESS_PASSWORD=root \ apache/iotdb:2.0.11-SNAPSHOT-ainode ``` ## Quick start We provide `docker-compose-cluster-1c1d1a.yml` in `docker/src/main/DockerCompose`. Downloading this yaml file, both standalone and ainode docker first. Subsequently, you can easily obtain a IoTDB cluster, which consists of a ConfigNode, a DataNode and a AINode, in your local machine. ## Port description By default, the ports that IoTDB uses are: * 6667: RPC port * 31999: JMX port * 8086: InfluxDB Protocol port * 8181: Monitor port * 5555: Data sync port * 9003: internal metadata rpc port (for cluster) * 40010: internal data rpc port (for cluster) * 10810: internal rpc port (for ainode) ## How to configure docker volumes The instructions below show how to store the output data and logs of IoTDB to two folders called iotdb_data and iotdb_logs respectively. `/D/docker/iotdb_data` and `/D/docker/iotdb_logs` can be changed to any local directory of your own host. ```shell docker run -it -v /D/docker/iotdb_data:/iotdb/data -v /D/docker/iotdb_logs:/iotdb/logs --name 123 apache/iotdb: ``` Similarly, you can customize the directories of the ainode through the following commands. ```shell docker run -it -v /D/docker/ainode_data:/ainode/data -v /D/docker/ainode_logs:/ainode/logs --name 123 apache/iotdb: ``` # How to run IoTDB client Suppose you have run an IoTDB Server in docker 1. Use `docker ps` to find out the CONTAINER ID e.g., ```shell $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c82321c70137 apache/iotdb: "/iotdb/sbin/start-s…" 12 minutes ago Up 12 minutes 0.0.0.0:6667->6667/tcp, 0.0.0.0:8181->8181/tcp, 5555/tcp, 0.0.0.0:31999->31999/tcp iotdb ``` 2. Use `docker exec` to attach the container: ```shell docker exec -it iotdb /bin/bash ``` Then, for the latest version (or, >=0.10.x), run `start-cli.sh`, for version 0.9.x and 0.8.1, run `start-client.sh`. Or, ```shell docker exec -it iotdb start-cli.sh ``` Enjoy it!