| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| # Docker image version definition | |
| Before v0.12, Apache IoTDB's docker image name and version format is: | |
| `apache/iotdb:0.<major>.<minor>`. | |
| 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.<major>.<minor>-node` and `apache/iotdb:0.<major>.<minor>-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:<version>-confignode`,`apache/iotdb:<version>-datanode` and `apache/iotdb:<version>-standalone`. | |
| ## The definition of tag "latest" | |
| Before v0.12, the "latest" tag will forward to the largest `apache/iotdb:0.<major>.<minor>`. | |
| From 0.12 on, the "latest" tag will forward to the largest `apache/iotdb:0.<major>.<minor>-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:<version> -f Dockerfile-<version> | |
| # for 1.0.0 | |
| cd src/main/DockerCompose | |
| ./do-docker-build.sh -t <target> -v <version> | |
| e.g. | |
| ./do-docker-build.sh -t standalone -v 1.0.0 | |
| ``` | |
| Notice: | |
| Make directory of src/main/target and put the zip file downloading from the official download page. | |
| e.g. | |
| ```shell | |
| $ ls -hl target/ | |
| total 215M | |
| -rw-r--r-- 1 root root 75M Nov 30 20:04 apache-iotdb-1.0.0-all-bin.zip | |
| -rw-r--r-- 1 root root 69M Dec 1 17:12 apache-iotdb-1.0.0-confignode-bin.zip | |
| -rw-r--r-- 1 root root 73M Dec 1 17:13 apache-iotdb-1.0.0-datanode-bin.zip | |
| ``` | |
| # 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:<version> | |
| ``` | |
| ```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:<version> | |
| ``` | |
| Since 1.0.0, see [offical documents.](https://iotdb.apache.org/UserGuide/Master/QuickStart/WayToGetIoTDB.html) | |
| ## 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) | |
| ## 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:<version> | |
| ``` | |
| # 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:<version> "/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 | |
| ``` | |
| # How to run IoTDB-grafana-connector | |
| 1. First way: use config file: | |
| ``` | |
| docker run -it -v /your_application.properties_folder:/iotdb-grafana-connector/config -p 8888:8888 apache/iotdb:<version>-grafana | |
| ``` | |
| 2. Second way: use environment(take `SPRING_DATASOURCE_URL` for example) | |
| ``` | |
| docker run -it -p 8888:8888 apache/iotdb:<version>-grafana -e SPRING_DATASOURCE_URL=jdbc:iotdb://iotdb:6667/ | |
| ``` | |
| 3. All related environment are as follows(more details in `grafana/src/main/resources/application.properties`) | |
| | name | default value | | |
| | ----------------------------------- | --------------------------------- | | |
| | SPRING_DATASOURCE_URL | jdbc:iotdb://127.0.0.1:6667/ | | |
| | SPRING_DATASOURCE_USERNAME | root | | |
| | SPRING_DATASOURCE_PASSWORD | root | | |
| | SPRING_DATASOURCE_DRIVER_CLASS_NAME | org.apache.iotdb.jdbc.IoTDBDriver | | |
| | SERVER_PORT | 8888 | | |
| | TIMESTAMP_PRECISION | ms | | |
| | ISDOWNSAMPLING | true | | |
| | INTERVAL | 1m | | |
| | CONTINUOUS_DATA_FUNCTION | AVG | | |
| | DISCRETE_DATA_FUNCTION | LAST_VALUE | | |
| # How to run IoTDB-grafana-connector by docker compose | |
| > Using docker compose, it contains three services: iotdb, grafana and grafana-connector | |
| 1. The location of docker compose file: `/docker/src/main/DockerCompose/docker-compose-grafana.yml` | |
| 2. Use `docker-compose up` can start all three services | |
| 1. you can use `docker-compose up -d` to start in the background | |
| 2. you can modify `docker-compose-grafana.yml` to implement your requirements. | |
| 1. you can modify environment of grafana-connector | |
| 2. If you want to **SAVE ALL DATA**, please use `volumes` keyword to mount the data volume or file of the host into the container. | |
| 3. After all services are start, you can visit `{ip}:3000` to visit grafana | |
| 1. In `Configuration`, search `SimpleJson` | |
| 2. Fill in url: `grafana-connector:8888`, then click `save and test`. if `Data source is working` is shown, the configuration is finished. | |
| 3. Then you can create dashboards. | |
| 4. if you want to stop services, just run `docker-compose down` | |
| Enjoy it! |