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