【Docker】clickhouse容器部署

ClickHouse docker 容器化部署

ClickHouse标准软件基于Bitnami clickhouse 23.12.2版本构建。

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform

qinghub自动安装部署配置库

初始化一个新实例

连接到同一网络的容器可以使用容器名称作为主机名来相互通信。

使用命令行

在此示例中,我们将创建一个 ClickHouse 客户端实例,该实例将连接到与客户端在同一 docker 网络上运行的服务器实例。

第 1 步:创建网络

docker network create my-network --driver bridge

步骤 2:在网络中启动 ClickHouse 容器

使用命令--network <NETWORK>的参数docker run将容器连接到网络my-network。

docker run -d --name clickhouse-server \
  --network my-network \
  --env ALLOW_EMPTY_PASSWORD=yes \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

步骤 3:启动 ClickHouse 客户端实例

最后,我们创建一个新的容器实例来启动 ClickHouse 客户端并连接到上一步中创建的服务器:

docker run -it --rm \
    --network my-network \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest clickhouse-client --host clickhouse-server

使用 Docker Compose 文件
如果未指定,Docker Compose 会自动设置一个新网络并将所有已部署的服务附加到该网络。但是,我们将显式定义一个bridge名为my-network的新网络。在此示例中,我们假设您希望从您自己的自定义应用程序映像连接到 ClickHouse 服务器,该image在以下代码段中通过服务名称myapp进行标识。

version: '2'

networks:
  my-network:
    driver: bridge

services:
  clickhouse:
    image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest
    environment:
      - ALLOW_EMPTY_PASSWORD=no
    networks:
      - my-network
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - my-network

重要

  1. 请使用实际的images更新上述代码片段中的占位符YOUR_APPLICATION_IMAGE
  2. 在您的应用程序容器中,使用主机名clickhouse连接到 ClickHouse 服务器

启动容器:

docker-compose up -d

配置

ClickHouse 可以通过环境变量或使用配置文件 ( config.xml) 进行配置。如果配置文件或环境变量中未指定配置选项,ClickHouse 将使用其内部默认配置。

配置覆盖

通过挂载自己的文件夹覆盖容器配置/bitnami/clickhouse/etc/conf.d或/bitnami/clickhouse/etc/users.d:

docker run --name clickhouse \
    --volume /path/to/override.xml:/bitnami/clickhouse/etc/conf.d/override.xml:ro \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

或使用 Docker Compose:

version: '2'

services:
  clickhouse:
    image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest
    volumes:
      - /path/to/override.xml:/bitnami/clickhouse/etc/conf.d/override.xml:ro

初始化一个新实例

当容器第一次执行时,它会执行再/docker-entrypoint-initdb.d目录下扩展名为.sh的文件. 对于每次容器启动时执行的脚本,请使用该/docker-entrypoint-startdb.d文件夹。

为了将自定义文件放入 docker 容器中,您可以将它们挂载为卷。

首次运行时设置管理员密码

可以使用以下环境变量轻松设置管理员用户和密码:

  • CLICKHOUSE_ADMIN_USER:数据库管理员用户。默认为default.
  • CLICKHOUSE_ADMIN_PASSWORD:数据库管理员用户密码。没有默认值。
    首次运行容器时传递环境变量会将CLICKHOUSE_ADMIN_USER用户的密码设置为CLICKHOUSE_ADMIN_PASSWORD的值。
docker run --name clickhouse -e CLICKHOUSE_ADMIN_PASSWORD=password123 registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

或者通过修改docker-compose.yml文件:

services:
  clickhouse:
  ...
    environment:
      - CLICKHOUSE_ADMIN_PASSWORD=password123
  ...

更改默认端口

可以使用以下环境变量更改 ClickHouse 默认端口:

  • CLICKHOUSE_HTTP_PORT:HTTP 端口。默认为8123.
  • CLICKHOUSE_TCP_PORT:TCP 端口。默认为9000.
  • CLICKHOUSE_MYSQL_PORT:MySQL 端口。默认为9004.
  • CLICKHOUSE_POSTGRESQL_PORT:PostgreSQL 端口。默认为9005.
  • CLICKHOUSE_INTERSERVER_HTTP_PORT:服务器间 HTTP 端口。默认为9009.

允许空密码

默认情况下,ClickHouse 镜像需要设置所有可用的密码。为了允许空密码,需要设置ALLOW_EMPTY_PASSWORD=yes 环境变量。CLICKHOUSE_ADMIN_PASSWORD我们强烈建议为任何其他场景指定。

docker run --name clickhouse --env ALLOW_EMPTY_PASSWORD=yes registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

或者通过修改docker-compose.yml文件:

services:
  clickhouse:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  ...

日志

docker logs clickhouse

如果您希望以不同方式使用容器日志,您可以使用该选项配置容器日志记录驱动程序。--log-driver在默认配置中,docker 使用json-file驱动程序。

维护

升级此图像

建议按照以下步骤升级容器。

第 1 步:获取更新后的图像

docker pull registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

或者,如果您使用的是 Docker Compose,请将 image 属性的值更新为bitnami/clickhouse:latest.

第 2 步:停止并备份当前正在运行的容器

使用命令停止当前正在运行的容器

docker stop clickhouse

或使用 Docker Compose:

docker-compose stop clickhouse

接下来,使用以下命令持久卷的快照/path/to/clickhouse-persistence:

rsync -a /path/to/clickhouse-persistence /path/to/clickhouse-persistence.bkp.$(date +%Y%m%d-%H.%M.%S)

第 3 步:删除当前正在运行的容器

docker rm -v clickhouse

或使用 Docker Compose:

docker-compose rm -v clickhouse

第 4 步:运行新镜像

从新image重新创建容器。

docker run --name clickhouse registry.cn-hangzhou.aliyuncs.com/qingcloudtech/clickhouse:latest

或使用 Docker Compose:

docker-compose up clickhouse
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容