从零到一安装和使用Influxdb3和influxdb-ui(Docker安装Influxdb)

3 阅读7分钟

从零到一安装和使用Influxdb3和influxdb-ui(Docker安装Influxdb) 原创 于 2025-08-30 17:29:42 发布 · 3.1k 阅读 ·

26 · 23 · CC 4.0 BY-SA版权 文章标签: #influxdb #物联网 #数据库 #时序数据库

该文章已生成可运行项目, 预览并下载项目源码 简单的介绍 心路历程 最近这几年,软件开发这一行当在国内受到了强烈的刺激,传统的软件开发已经接近彻底饱和,低代码和零代码框架和平台,再加上AI的辅助,似乎就像只会CRUD的程序员上吊的绳子,虽然这些东西很难妨碍到大型以及有业务价值的系统,但是不得不承认,岗位的确收缩了,变得更少了,传统软件开发已经走到了陌路,而如今随着各种智慧城市、智慧水务、城市安全、新能源汽车、工业自动化相关领域,国家给予了大力支持,于是有很多技术慢慢开始在国内崛起,给了程序员们又一次为这个世界创造价值的机会,如今硬件设备、传感器,它们带来的数据越来越具备价值,而关系型数据库虽然承载软件系统基本内容的铺垫,却难以承载大量设备传输过来的数据内容,但时序数据库(Time Series DBMS)解决了这一难题,所以趁着这股风,InfluxDB用它的优势爬上了DB-engines排行榜时序数据库榜的榜首(国产也有优秀的时序数据库,例如TDengine也值得学习)

相关链接导航 InfluxDB3-core (截止2025年8月30日最新一版)

InfluxDB 3 Core Documentation

InfluxDB3-Explorer (InfluxDB的图形化界面-网页版)

InfluxDB 3 Explorer Documentation

InfluxDB Docker官方镜像源

hub.docker.com/_/influxdb/…

安装Influxdb3 传统安装 Install InfluxDB 3 Core | InfluxDB 3 Core Documentation 此文档中给到了所有操作系统安装的方式

下载安装即可

Docker安装 拉镜像 下载influxdb:3-core 3-core就是目前的版本,它是数据库本身,所以不附带UI界面

docker pull influxdb:3-core 运行项目并下载源码 创建Influxdb在docker中使用的网络

创建网络

docker network create influx-network 运行项目并下载源码 启动容器 docker run -d
--name influxdb3-core
--network influx-network
-p 8181:8181
-v ~/.influxdb3/data:/var/lib/influxdb3/data
-v ~/.influxdb3/plugins:/var/lib/influxdb3/plugins
influxdb:3-core
influxdb3 serve
--node-id=node0
--object-store=file
--data-dir=/var/lib/influxdb3/data
--plugin-dir=/var/lib/influxdb3/plugins 运行项目并下载源码

逐行解析: docker run -d

-d 参数让容器在后台(detached模式)运行,不会占用当前终端

启动后会返回容器ID,容器在后台持续运行

--name influxdb3-core

为容器指定一个易记的名称 influxdb3-core

后续可以通过这个名称来管理容器,如 docker stop influxdb3-core

避免了使用随机生成的容器ID

--network influx-network

设置网络为influx-network

网络端口映射

-p 8181:8181

冒号前面是宿主机的端口,后面是容器内部的端口(如果宿主机没占用8181,那么保持一致就好)

数据持久化配置:

-v ~/.influxdb3/data:/var/lib/influxdb3/data

将主机的 ~/.influxdb3/data 目录挂载到容器内的 /var/lib/influxdb3/data

-v ~/.influxdb3/plugins:/var/lib/influxdb3/plugins

挂载插件目录,用于扩展InfluxDB功能

镜像和启动命令:

influxdb:3-core是镜像本身,刚才已经pull过了,influxdb3 serve这是容器内执行的主命令,用于启动InfluxDB 3.0服务,serve 子命令表示以服务器模式运行

--node-id=node0

为当前节点指定唯一标识符 node0

在集群环境中用于区分不同节点

单机部署时也需要指定,便于日志和监控识别

--object-store=file

指定对象存储后端为文件系统

InfluxDB 3.0支持多种存储后端:file(本地文件)、S3、Azure Blob等

file 模式适合开发和小规模部署,数据直接存储在本地磁盘

--data-dir=/var/lib/influxdb3/data

明确指定数据存储目录

对应前面volume挂载的容器内路径

所有WAL文件、Parquet文件等都会存储在此目录

--plugin-dir=/var/lib/influxdb3/plugins

指定插件加载目录

InfluxDB 3.0启动时会扫描此目录加载可用插件

支持动态扩展数据库功能

创建令牌 到了这里,其实安装还并没有完全完成,因为数据库都有安全校验的说法,这里为容器内的influxdb需要创建一个密钥token,才可以继续下去

docker exec -it influxdb3-core influxdb3 create token --admin 运行项目并下载源码 这个创建token的命令输完之后,不出意外则会输出一段token出来

这个token最好是记录下来,因为后面会用到(虽然没记下来,也有办法重新生成)

接下来需要将这个密钥放到我们的宿主机的变量里

在您的主机终端中执行(不是容器内)

export INFLUXDB3_AUTH_TOKEN=把刚才的token放这里

验证环境变量设置成功

echo $INFLUXDB3_AUTH_TOKEN 运行项目并下载源码 永久设置环境变量(可选)

添加到您的 shell 配置文件

echo 'export INFLUXDB3_AUTH_TOKEN=iox_v1_your_token_here' >> ~/.bashrc

重新加载配置

source ~/.bashrc 运行项目并下载源码 安装InfluxDB 3 Explorer Web UI 一下是官方文档中给出的启动命令做了一些小的优化,详见Install and run InfluxDB 3 Explorer | InfluxDB 3 Explorer Documentation

docker run --detach
--name influxdb3-explorer
--network influx-network
--publish 8888:80
--publish 8889:8888
--volume (pwd)/config:/approot/config:ro volume(pwd)/config:/app-root/config:ro \ --volume (pwd)/db:/db:rw
--volume $(pwd)/ssl:/etc/nginx/ssl:ro
influxdata/influxdb3-ui:latest
--mode=admin 运行项目并下载源码

关键事项说明:

$(pwd) 的含义

当前目录: 执行命令时所在的目录

绝对路径: 必须确保当前目录包含 config、db、ssl 子文件夹

问题: 如果在错误的目录执行,会挂载错误的路径

这里的$(pwd)是指当前文件夹,所以先创建一个为influxdb3 explorer所用的文件夹,然后再在下面创建config、db、ssl三个文件夹,赋予权限,再在终端输入启动命令

权限说明

:ro (read-only): 容器只能读取,不能修改宿主机文件

:rw (read-write): 容器可以读取和修改宿主机文件

默认: 不指定权限时默认为 :rw

端口映射逻辑

宿主机:8888 → 容器:80 (Web界面) 宿主机:8889 → 容器:8888 (API接口) 运行项目并下载源码 逐行解析

docker run

创建并启动一个新的容器实例

--detach (或 -d)

作用: 后台运行容器

效果: 容器在后台运行,不会占用当前终端,返回容器ID

--name influxdb3-explorer

作用: 给容器指定一个名称

效果: 容器名称为 influxdb3-explorer,方便后续引用

替代: 不指定则Docker会自动生成随机名称

--network influx-network

作用: 将容器连接到指定的Docker网络

网络名: influx-network

好处: 同网络内的容器可以通过容器名相互访问

--publish 8888:80 (或 -p)

格式: 宿主机端口:容器端口

作用: 端口映射,将容器内的80端口映射到宿主机的8888端口

访问: 可通过 http://localhost:8888 访问Web界面

--publish 8889:8888

作用: 将容器内的8888端口映射到宿主机的8889端口

用途: 通常是API或管理接口端口

--volume $(pwd)/config:/app-root/config:ro

格式: 宿主机路径:容器路径:权限

$(pwd): 当前工作目录的绝对路径

映射: ./config → /app-root/config

权限: :ro = read-only (只读)

用途: 存储应用配置文件

--volume $(pwd)/db:/db:rw

映射: ./db → /db

权限: :rw = read-write (读写)

用途: 存储数据库文件和应用数据

--volume $(pwd)/ssl:/etc/nginx/ssl:ro

映射: ./ssl → /etc/nginx/ssl

权限: :ro = read-only (只读)

用途: 存储SSL证书文件

influxdata/influxdb3-ui:latest 镜像名称

--mode=admin 以管理员模式启动应用

基础配置 安装完毕之后,需要做一件事就是,为Explorer配置默认的数据库地址,因为Explorer只是一个UI界面,它需要连到我们另一个容器中的真正的influxdb数据库

在刚刚创建并挂载过的config文件夹中创建一个默认的配置文件 名为config.json,在这个文件中输入我们已经创建成功的influxdb的信息

{ "DEFAULT_INFLUX_SERVER": "host.docker.internal:8181(连接地址,host.docker.internal代表docker内部网络)", "DEFAULT_INFLUX_DATABASE": "_internal(默认数据库名,可以换成别的库名)", "DEFAULT_API_TOKEN": "apiv3_TVQpr2.....(刚刚保存的token)", "DEFAULT_SERVER_NAME": "Local-InfluxDB3(随便起个名字)" } 运行项目并下载源码 完成启动 安装完毕后进入会看到如下界面

至此influxdb已经安装完毕

原文链接:blog.csdn.net/RudolphLiu/…