Docker部署ClickHouse时序数据库

📅 2026/7/15 6:04:13 👁️ 阅读次数 📝 编程学习
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