无法将数据插入 Docker 内启动的 TDengine 服务器
Cannot insert data to TDengine server that started within Docker
目前我正在使用命令docker run -p 6030-6042:6030-6042/tcp -p 6030-6040:6030-6040/udp --name taosd tdengine/tdengine
启动TDengine服务器,然后在另一个容器docker run --rm -it tdengine/tdengine taos -h <host ip>
中将其与taos
shell连接。它连接正常,但是当向 table 中插入数据时,它会导致错误:
Welcome to the TDengine shell from Linux, Client Version:2.0.22.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
taos> create database if not exists test;
Query OK, 0 of 0 row(s) in database (0.000638s)
taos> use test;
Database changed.
taos> create table if not exists tb1 (ts timestamp, n int);
Query OK, 0 of 0 row(s) in database (0.000880s)
taos> insert into tb1 values (now, 1);
DB error: Unable to resolve FQDN (0.090774s)
TDengine 连接基于 FQDN(如果您熟悉主机名)- 这需要对服务器端点进行 DNS 解析。
在您的情况下,首先在开始时设置主机名:docker run --hostname taosd ...
,然后在 shell 所在的容器或主机中设置 echo <your ip> taosd >> /etc/hosts
。然后你可以用taos -h taosd
连接它(这里我们使用taosd作为TDengine服务器容器主机名,所有连接都应该使用主机名来解析真实ip。)
步骤:
启动TDengine服务器:
docker run --rm --hostname taosd \
-p 6030-6042:6030-6042/tcp -p 6030-6040:6030-6040/udp \
--name taosd tdengine/tdengine
启动另一个容器作为客户端:
docker run --rm -it --add-host taosd:<your ip> tdengine/tdengine taos -h taosd
--add-host
将在 /etc/hosts.
中添加一个 dns 解析行
<your ip>
你可以使用外部 IP 或通过 docker inspect taosd |jq '.[0].NetworkSettings.Networks[].IPAddress' -r
.
获取容器 ip
现在使用您的 sql:
插入数据
create database if not exists test;
use test;
create table if not exists tb1 (ts timestamp, n int);
insert into tb1 values (now, 1);
全部完成。
目前我正在使用命令docker run -p 6030-6042:6030-6042/tcp -p 6030-6040:6030-6040/udp --name taosd tdengine/tdengine
启动TDengine服务器,然后在另一个容器docker run --rm -it tdengine/tdengine taos -h <host ip>
中将其与taos
shell连接。它连接正常,但是当向 table 中插入数据时,它会导致错误:
Welcome to the TDengine shell from Linux, Client Version:2.0.22.0
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
taos> create database if not exists test;
Query OK, 0 of 0 row(s) in database (0.000638s)
taos> use test;
Database changed.
taos> create table if not exists tb1 (ts timestamp, n int);
Query OK, 0 of 0 row(s) in database (0.000880s)
taos> insert into tb1 values (now, 1);
DB error: Unable to resolve FQDN (0.090774s)
TDengine 连接基于 FQDN(如果您熟悉主机名)- 这需要对服务器端点进行 DNS 解析。
在您的情况下,首先在开始时设置主机名:docker run --hostname taosd ...
,然后在 shell 所在的容器或主机中设置 echo <your ip> taosd >> /etc/hosts
。然后你可以用taos -h taosd
连接它(这里我们使用taosd作为TDengine服务器容器主机名,所有连接都应该使用主机名来解析真实ip。)
步骤:
启动TDengine服务器:
docker run --rm --hostname taosd \ -p 6030-6042:6030-6042/tcp -p 6030-6040:6030-6040/udp \ --name taosd tdengine/tdengine
启动另一个容器作为客户端:
docker run --rm -it --add-host taosd:<your ip> tdengine/tdengine taos -h taosd
中添加一个 dns 解析行--add-host
将在 /etc/hosts.
获取容器 ip<your ip>
你可以使用外部 IP 或通过docker inspect taosd |jq '.[0].NetworkSettings.Networks[].IPAddress' -r
.现在使用您的 sql:
插入数据create database if not exists test; use test; create table if not exists tb1 (ts timestamp, n int); insert into tb1 values (now, 1);
全部完成。