当前位置: 首页>数据库>正文

ClickHouse docker 容器化部署

ClickHouse docker 容器化部署

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

初始化一个新实例

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

使用命令行

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

第 1 步:创建网络
docker network create my-network --driver bridge
步骤 2:在网络中启动 ClickHouse 容器

使用命令–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

启动容器:

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

https://www.xamrdz.com/database/62q1849063.html

相关文章: