当前位置: 首页 > news >正文

Docker部署ClickHouse时序数据库

目录

一、拉取 ClickHouse 镜像

二、快速启动(体验版)

三、进入容器

四、测试SQL

五、浏览器访问

六、数据持久化(推荐)

七、设置用户名密码(推荐)

八、使用 Docker Compose(推荐)

九、连接方式

使用客户端

使用数据库工具

十、常用 Docker 命令


一、拉取 ClickHouse 镜像

官方镜像:

docker pull clickhouse/clickhouse-server:latest

查看镜像:

docker images

应该看到类似:

clickhouse/clickhouse-server latest

二、快速启动(体验版)

docker run -d \ --name clickhouse \ -p 8123:8123 \ -p 9000:9000 \ clickhouse/clickhouse-server:latest

指定密码启动

docker run -d \ --name clickhouse \ -p 8123:8123 \ -p 9000:9000 \ -e CLICKHOUSE_USER=default \ -e CLICKHOUSE_PASSWORD=123456 \ -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \ clickhouse/clickhouse-server:latest

参数说明:

参数说明
8123HTTP接口
9000Native TCP接口
--name容器名称

查看容器:

docker ps

输出类似:

CONTAINER ID
clickhouse
0.0.0.0:8123->8123
0.0.0.0:9000->9000

三、进入容器

docker exec -it clickhouse bash

进入后执行:

clickhouse-client

看到:

:)

说明安装成功

四、测试SQL

创建数据库:

CREATE DATABASE test;

查看数据库:

SHOW DATABASES;

创建表:

CREATE TABLE test.user ( id UInt64, name String, create_time DateTime ) ENGINE = MergeTree ORDER BY id;
CREATE TABLE IF NOT EXISTS monitor_his_data ( `_ts` DateTime64(3), `business_id` String, `data_dimension_type` UInt16, `data_type_point` LowCardinality(String), `value` String ) ENGINE = MergeTree PARTITION BY toYYYYMM(`_ts`) ORDER BY (`business_id`, `data_dimension_type`, `data_type_point`, `_ts`) SETTINGS index_granularity = 8192; CREATE TABLE IF NOT EXISTS monitor_his_accumulate_data ( `_ts` DateTime64(3), `business_id` String, `data_dimension_type` UInt16, `data_type_point` LowCardinality(String), `time_dimension` UInt8, `value` Decimal(38, 10) ) ENGINE = MergeTree PARTITION BY toYYYYMM(`_ts`) ORDER BY (`business_id`, `data_dimension_type`, `data_type_point`, `time_dimension`, `_ts`) SETTINGS index_granularity = 8192;

插入数据:

INSERT INTO test.user VALUES (1,'Tom',now()), (2,'Lucy',now());

查询:

SELECT * FROM test.user;

结果:

1 Tom
2 Lucy

五、浏览器访问

ClickHouse 自带 HTTP 服务。

浏览器访问:

http://localhost:8123

如果正常,会返回:

OK

也可以直接执行 SQL:

http://localhost:8123/?query=SELECT%201

返回1

六、数据持久化(推荐)

如果直接运行容器,删除容器后数据会丢失。

推荐挂载数据目录:

mkdir -p /opt/clickhouse/data mkdir -p /opt/clickhouse/logs

启动:

docker run -d \ --name clickhouse \ -p 8123:8123 \ -p 9000:9000 \ -v /opt/clickhouse/data:/var/lib/clickhouse \ -v /opt/clickhouse/logs:/var/log/clickhouse-server \ clickhouse/clickhouse-server:latest

这样:

数据库数据 ↓ /opt/clickhouse/data

日志:

/opt/clickhouse/logs

七、设置用户名密码(推荐)

默认情况下用户为:

default

通常需要通过配置文件设置密码。

可以挂载配置目录:

mkdir -p /opt/clickhouse/config

启动:

-v /opt/clickhouse/config:/etc/clickhouse-server

然后修改:

users.xml

配置密码,例如:

<default> <password>123456</password> </default>

修改后重启:

docker restart clickhouse

八、使用 Docker Compose(推荐)

创建docker-compose.yml

version: "3.9" services: clickhouse: image: clickhouse/clickhouse-server:latest container_name: clickhouse restart: always ports: - "8123:8123" - "9000:9000" volumes: - ./data:/var/lib/clickhouse - ./logs:/var/log/clickhouse-server ulimits: nofile: soft: 262144 hard: 262144

启动:

docker compose up -d

查看:

docker compose ps

停止:

docker compose down

九、连接方式

使用客户端

进入容器:

docker exec -it clickhouse clickhouse-client

如果设置了密码:

clickhouse-client \ --user default \ --password

使用 HTTP API

curl "http://localhost:8123/?query=SELECT+version()"

例如返回:

25.x.x.x

使用数据库工具

常见支持 ClickHouse 的工具包括:

  • DBeaver
  • DataGrip
  • VS Code SQLTools(安装 ClickHouse 插件)
  • Grafana(用于监控和可视化)

连接信息:

参数
Hostlocalhost
Port9000(Native)或 8123(HTTP)
Userdefault
Password(按配置填写)

十、常用 Docker 命令

# 查看日志 docker logs clickhouse # 实时查看日志 docker logs -f clickhouse # 重启 docker restart clickhouse # 停止 docker stop clickhouse # 启动 docker start clickhouse # 删除容器 docker rm -f clickhouse
http://www.cnnetsun.cn/news/3390229.html

相关文章:

  • ping命令无效时,我们可以使用工具tcping取而代之
  • C++实现箱线图异常值检测:从算法原理到工程实践
  • ChatGPT Codex与工作模式:AI辅助开发实战指南
  • ChatGPT桌面版:AI工具从网页到工作流的无缝集成变革
  • VC++财务管理系统开发实战:从环境搭建到核心模块实现
  • 突然袭击!Anthropic 发布 Claude 4.8,科技圈彻底炸锅了!
  • 从零到一:配置与解析小程序二维码直达指定页面(实战避坑指南)
  • C++异常处理进阶:从RAII到noexcept的工程实践指南
  • 基于FPGA的车牌识别系统:从算法仿真到硬件部署的实践指南
  • VS Code+Continue构建本地化AI编程环境实战指南
  • GPL开源协议
  • bWAPP漏洞靶场从零搭建指南:三种部署方案与实战入门
  • 无刷直流电机(BLDCM)驱动电路设计与控制策略实战解析
  • 告别GDI卡顿:C#调用DXGI Desktop Duplication API实现高性能桌面采集
  • Unity 2D像素角色动画全流程:从精灵图集导入到性能优化实战
  • IPv6无状态地址自动配置(SLAAC)实战:从RA/RS报文到华为设备配置
  • AMD Ryzen调试工具完全指南:免费开源硬件性能调优神器
  • 遗传算法解决N皇后问题的Python实战与工程细节
  • Voice Changer 实时语音转换实战指南:从部署到深度集成的AI语音处理方案
  • 用AI出现循环并发,请求频繁报错?DMXAPI 聚合平台AI排错工具,给出节流优化方案
  • C++实现最小二乘法多项式拟合:从数学原理到工程实战
  • AR Foundation核心架构解析:从跨平台原理到实战避坑指南
  • 32- 杨逢昌:制造业6S无效整改治理方案——问题三阶过滤标准化体系
  • Python风格轮动回测系统:从量化原理到实盘部署
  • 基于STM32单片机老人防丢智能拐杖 盲人导航定位跌倒检测设计系统312(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • C++ OpenCV配置正确但图片无法显示?彻底解决运行时DLL缺失问题
  • 【Java踩坑笔记】44_数据库字段用保留字,MyBatis生成的SQL直接报错
  • VS Code状态栏实时监控Claude API用量
  • LÖVE游戏AI实战:从A*寻路到行为树构建智能NPC
  • 为什么给 Agent 加记忆反而变差了:Tree-of-Experience 在金融预测中的经验管理教训