我的docker随笔40:clickhouse服务部署
创始人
2025-06-01 22:13:33

本文介绍 clickhouse 数据库的容器化部署。

起因

某项目需生产环境数据库,因数量太大,较耗时。经询问得知生产环境中有个 clickhouse 数据库,于是抽时间用 docker 部署,一方面是不想落后于人,要学习新技术;另一方面是为了方便外网调试。

服务端部署

下载镜像

dockerhub上有许多clickhouse的镜像,这里选择较流行的,由于生产环境的版本是21.9,因此下载相近的版本。

docker pull yandex/clickhouse-server:21.9.6   # 很久未更新 只有x86版本docker pull clickhouse/clickhouse-server:21.9.6  # 更新,在x86和arm版本

准备配置文件

启动容器,用挂载方式,从容器拷贝指定文件。操作过程如下:

docker run --rm -it -v /tmp/config:/tmp/config --rm --name click yandex/clickhouse-server:21.9.6 bashcd /tmp/config/
cp /etc/clickhouse-server/users.xml .
cp /etc/clickhouse-server/config.d/docker_related_config.xml .
cp /etc/clickhouse-server/config.xml .exit

配置文件在主机目录/tmp/config中,将其拷贝到某工程目录,假定。修改配置,如下:

./config/docker_related_config.xml, L3 关闭监听地址 
./config/config.xml, L159 打开监听地址
0.0.0.0./config/users.xml,L68 添加default用户密码,可不加密码,也可添加另外的用户名

服务脚本

docker-compose.yaml文件:

version: '3.8'
services:clickhouse:image: yandex/clickhouse-server:21.9.6container_name: clickhouseports:- "9999:8123"#- "9000:9000"volumes:# 默认配置- ./config/docker_related_config.xml:/etc/clickhouse-server/config.d/docker_related_config.xml- ./config/config.xml:/etc/clickhouse-server/config.xml- ./config/users.xml:/etc/clickhouse-server/users.xml- /etc/localtime:/etc/localtime# 运行日志- ./log:/var/log/clickhouse-server# 数据持久- ./data:/var/lib/clickhousenetworks:- my-netnetworks:my-net:

启动:

docker-compose up -d

说明:clickhouse提供http和tcp两种接口,前者端口默认为8123,后者默认为9000。按需要暴露端口即可。

客户端使用

客户端使用DBeaver图形化工具。

下载及安装

略。

安装驱动

双击DBeaver图标,默认情况下,未安装连接数据库。需要自己连接某种数据库,由该工具再下载。此处列出clickhouse的连接过程。

latelee.cn 9999
default 密码为123456

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建数据表:

create database if not exists testUSER;
DROP TABLE if exists testUSER.test_user;CREATE TABLE if not exists default.userinfo (
`id` Nullable(String),
`age` Nullable(Int64),
`name` Nullable(String)
) ENGINE = Memoryinsert into default.userinfo(id, age, name) values('001', 250,'latelee');
insert into default.userinfo(id, age, name) values('002', 252,'latelee2');
insert into default.userinfo(id, age, name) values('003', 253,'latelee3');
insert into default.userinfo(id, age, name) values('004', 254,'latelee4');
insert into default.userinfo(id, age, name) values('005', 255,'latelee5');

快捷键:

Ctrl+Enter:执行指定的sql语句。

小结

由于有现成的 docker 镜像,因此部署并没有太多困难,只是首次接触,对一些SQL语法不熟悉,导致建表、查询有点耗时。

高阶功能暂未使用到。

语句小结

创建数据库:
create database if not exists userinfo;

本节列出一些错误信息记录。

密码错误:

Code: 516. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED) (version 22.1.3.7 (official build))

相关内容

热门资讯

退市苏吴:股票于12月9日进入... 新京报贝壳财经讯 退市苏吴12月16日公告,公司A股股票于2025年12月12日、2025年12月1...
云南3名村民擅入封闭矿硐窒息死... 出事硐口警示标志 今年8月22日,云南迪庆州维西县白济汛乡3名村民私自破坏长期停用探矿硐封堵设施进入...
甘露特钠迎转机,复星医药拟控股... 12月15日,复星医药宣布,控股子公司复星医药产业与绿谷(上海)医药科技有限公司(“绿谷医药”)及其...
“铁饭碗”迟早要打破? 文/洛水钟鸣(识局微信公共账号zhijuzk)到了今天,谁要再说体制内是“金饭碗”,只能说明他太不了...
卖早餐的蜜雪冰城,被嫌弃了? 近日,蜜雪冰城在大连、西安、南宁和杭州4座试点城市上线早餐产品。 图源:蜜雪冰城小程序 产品线分...