docs.md 7.9 KB
Newer Older
S
skye0207 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
# 通过Docker快速体验TDengine

由于目前TDengine2.0的服务器仅能在Linux系统上安装和运行,如果开发者使用的是Mac或Windows系统,可能需要安装虚拟机或远程连接Linux服务器,来使用TDengine。Docker轻巧快速,可以作为一个可行,经济,高效的替代方案。下文准备一步一步介绍,如何通过Docker快速使用TDengine,可用于开发,测试,和备份数据。

  
### 下载Docker

docker的下载可以参考[docker官网文档Get Docker部分](https://docs.docker.com/get-docker/)

安装成功后可以查看下docker版本。

```bash
$ docker -v
Docker version 20.10.5, build 55c4c88
```

  
  
### 在docker容器中运行TDengine

+ 使用命令拉取tdengine镜像,并使它在后台运行。

```bash
$ docker run -d tdengine/tdengine
cdf548465318c6fc2ad97813f89cc60006393392401cae58a27b15ca9171f316
```

  **run**:和前面的docker命令组合起来,运行一个容器。

  **-d**:让容器在后台运行。

  **tdengine/tdengine**:拉取的TDengine官方发布的应用镜像

  **cdf548465318c6fc2ad97813f89cc60006393392401cae58a27b15ca9171f316**

  返回的长字符是容器ID,我们可以通过容器ID来查看对应的容器。

  
+ 确认容器是否已经运行起来了。

```bash
$ docker ps
CONTAINER ID   IMAGE               COMMAND   CREATED          STATUS          ···
cdf548465318   tdengine/tdengine   "taosd"   14 minutes ago   Up 14 minutes   ···
```

  **docker ps**:列出所有在运行中的容器信息。

  **CONTAINER ID**:容器ID。

  **IMAGE**:使用的镜像。

  **COMMAND**:启动容器时运行的命令。

  **CREATED**:容器创建时间。

  **STATUS**:容器状态。UP表示运行中。

  
+ 进入docker容器内,使用tdengine。

```bash
$ docker exec -it cdf548465318 /bin/bash
root@cdf548465318:~/TDengine-server-2.0.13.0#
```

  **exec**:通过docker exec命令进入容器,如果退出容器不会停止。

  **-i**:进入交互模式。

  **-t**:指定一个终端。

  **cdf548465318**:容器ID,需要根据具体情况进行修改。

  **/bin/bash**:载入容器后运行bash来进行交互。

  
+ 进入容器后,执行TDengine命令行程序。

```bash
$ root@cdf548465318:~/TDengine-server-2.0.13.0# taos

Welcome to the TDengine shell from Linux, Client Version:2.0.13.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.

taos>
```

TDengine终端连接服务成功,打印出了欢迎消息和版本信息。如果失败,会有错误信息打印出来。

在TDengine终端中,可以通过SQL命令来创建/删除数据库,表,超级表等,并可以进行插入查询操作。具体可以参考[TDengine官网文档的TAOS SQL部分](https://www.taosdata.com/cn/documentation/taos-sql)

  
  
### 通过taosdemo进一步了解TDengine

+ 接上面的步骤,先退出TDengine命令行程序。

```bash
$ taos> q
root@cdf548465318:~/TDengine-server-2.0.13.0#
```

  
+ 在Linux终端执行taosdemo。

```bash
$ root@cdf548465318:~/TDengine-server-2.0.13.0# taosdemo
###################################################################
# Server IP:                         localhost:0
# User:                              root
# Password:                          taosdata
# Use metric:                        true
# Datatype of Columns:               int int int int int int int float
# Binary Length(If applicable):      -1
# Number of Columns per record:      3
# Number of Threads:                 10
# Number of Tables:                  10000
# Number of Data per Table:          100000
# Records/Request:                   1000
# Database name:                     test
# Table prefix:                      t
# Delete method:                     0
# Test time:                         2021-04-13 02:05:20
###################################################################
```

回车后,该命令将新建一个数据库test,并且自动创建一张超级表meters,并以超级表meters为模版创建了1万张表,表名从"t0"到"t9999"。每张表有10万条记录,每条记录有f1,f2,f3三个字段,时间戳ts字段从"2017-07-14 10:40:00 000" 到"2017-07-14 10:41:39 999"。每张表带有areaid和loc两个标签TAG, areaid被设置为1到10, loc被设置为"beijing"或者“shanghai"。

  
+ 运行taodemo命令的结果,可以进入TDengine命令行,进行验证。

  **进入命令行。**

```bash
$ root@cdf548465318:~/TDengine-server-2.0.13.0# taos

Welcome to the TDengine shell from Linux, Client Version:2.0.13.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.

taos>
```

  **查看数据库。**

```bash
$ taos> show databases;
  name        |      created_time       |   ntables   |   vgroups   |    ···
  test        | 2021-04-13 02:14:15.950 |       10000 |           6 |    ···
  log         | 2021-04-12 09:36:37.549 |           4 |           1 |	   ···
  
```

  **查看超级表。**

```bash
$ taos> use test;
Database changed.

$ taos> show stables;
       name              |      created_time       | columns |  tags  |   tables    |
=====================================================================================
       meters            | 2021-04-13 02:14:15.955 |       4 |      2 |       10000 |
Query OK, 1 row(s) in set (0.001737s)

```

  **查看表,限制输出十条。**

```bash
$ taos> select * from test.t0 limit 10;
           ts            |     f1      |     f2      |     f3      |
====================================================================
 2017-07-14 02:40:01.000 |           3 |           9 |           0 |
 2017-07-14 02:40:02.000 |           0 |           1 |           2 |
 2017-07-14 02:40:03.000 |           7 |           2 |           3 |
 2017-07-14 02:40:04.000 |           9 |           4 |           5 |
 2017-07-14 02:40:05.000 |           1 |           2 |           5 |
 2017-07-14 02:40:06.000 |           6 |           3 |           2 |
 2017-07-14 02:40:07.000 |           4 |           7 |           8 |
 2017-07-14 02:40:08.000 |           4 |           6 |           6 |
 2017-07-14 02:40:09.000 |           5 |           7 |           7 |
 2017-07-14 02:40:10.000 |           1 |           5 |           0 |
Query OK, 10 row(s) in set (0.003638s)

```

  **查看t0表的标签值。**

```bash
$ taos> select areaid, loc from test.t0;
   areaid    |    loc     |
===========================
          10 | shanghai   |
Query OK, 1 row(s) in set (0.002904s)

```

  
  
### 开发时连接上通过docker启动的TDengine

连接并且使用在docker容器中的启动的TDengine,有以下两个思路:


1. 通过端口映射(-p),将容器内部开放的网络端口映射到宿主机的指定端口上。通过挂载本地目录(-v),可以实现宿主机与容器内部的数据同步,防止容器删除后,数据丢失。

```bash
$ docker run -d -v /etc/taos:/etc/taos -p 6041:6041 tdengine/tdengine
526aa188da767ae94b244226a2b2eec2b5f17dd8eff592893d9ec0cd0f3a1ccd

$ curl -u root:taosdata -d 'show databases' 127.0.0.1:6041/rest/sql
{"status":"succ","head":["name","created_time","ntables","vgroups","replica","quorum","days","keep1,keep2,keep(D)","cache(MB)","blocks","minrows","maxrows","wallevel","fsync","comp","precision","status"],"data":[],"rows":0}
```

  第一条命令,启动了一个运行了TDengine的docker容器,并且将容器的6041端口映射到宿主机的6041端口上。

  第二条命令,通过RESTful接口访问TDengine,这时连接的是本机的6041端口,可见连接成功。

  
2. 直接通过exec命令,进入到docker容器中去做开发。

```bash
$ docker exec -it 526aa188da /bin/bash
```