homework-jianmu/documentation20/cn/02.getting-started/01.docker/docs.md

7.9 KiB
Raw Blame History

通过Docker快速体验TDengine

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

 

下载Docker

docker的下载可以参考docker官网文档Get Docker部分

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

$ docker -v
Docker version 20.10.5, build 55c4c88

   

在docker容器中运行TDengine

  • 使用命令拉取tdengine镜像并使它在后台运行。
$ docker run -d tdengine/tdengine
cdf548465318c6fc2ad97813f89cc60006393392401cae58a27b15ca9171f316

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

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

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

cdf548465318c6fc2ad97813f89cc60006393392401cae58a27b15ca9171f316

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

 

  • 确认容器是否已经运行起来了。
$ 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。
$ 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命令行程序。
$ 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部分

   

通过taosdemo进一步了解TDengine

  • 接上面的步骤先退出TDengine命令行程序。
$ taos> q
root@cdf548465318:~/TDengine-server-2.0.13.0#

 

  • 在Linux终端执行taosdemo。
$ 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万条记录每条记录有f1f2f3三个字段时间戳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命令行进行验证。

进入命令行。

$ 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>

查看数据库。

$ 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 |	   ···
  

查看超级表。

$ 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)

查看表,限制输出十条。

$ 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表的标签值。

$ 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),可以实现宿主机与容器内部的数据同步,防止容器删除后,数据丢失。
$ 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容器中去做开发。

$ docker exec -it 526aa188da /bin/bash