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

227 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 通过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万条记录每条记录有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命令行进行验证。
  **进入命令行。**
```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
```