从零到一安装和使用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日最新一版)
InfluxDB3-Explorer (InfluxDB的图形化界面-网页版)
InfluxDB 3 Explorer Documentation
InfluxDB Docker官方镜像源
安装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)/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已经安装完毕