版本
latest标签指向最新稳定分支的最新发布版本。22.2这类分支标签指向对应分支的最新发布版本。22.2.3和22.2.3.5这类完整版本标签指向对应的发布版本。head标签基于默认分支上的最新 commit 构建。- 每个标签都可附带一个可选的
-alpine后缀,表示它是基于alpine构建的。
兼容性
- amd64 镜像要求支持 SSE3 指令集。 几乎所有 2005 年之后的 x86 CPU 都支持 SSE3。
- arm64 镜像要求支持 ARMv8.2-A 架构,并且 还需要支持 Load-Acquire RCpc 寄存器。该寄存器在 ARMv8.2-A 中是可选的,而在 ARMv8.3-A 中则是必需的。Graviton >=2、Azure 和 GCP 实例均支持此特性。 不受支持的设备示例包括 Raspberry Pi 4 (ARMv8.0-A) 和 Jetson AGX Xavier/Orin (ARMv8.2-A) 。
- 从 ClickHouse 24.11 开始,Ubuntu 镜像已改为使用
ubuntu:22.04作为基础镜像。它要求 docker 版本 >=20.10.10, 且包含该 patch。作为临时变通方案,你也可以 改用docker run --security-opt seccomp=unconfined,但这会带来安全风险。
如何使用此镜像
启动服务器实例
default 用户身份运行。
使用原生客户端连接
使用 curl 进行连接
停止 / 删除容器
网络
预定义用户
default 默认不具备网络访问权限,除非为其设置了密码,
请参见下方的“如何在启动时创建默认数据库和用户”和“管理 default 用户”--network=host 让容器直接使用主机端口
(也有助于获得更好的网络性能) :
上述示例中的 default 用户仅可用于来自 localhost 的请求
存储卷
/var/lib/clickhouse/- ClickHouse 存储数据的主要目录/var/log/clickhouse-server/- 日志
/etc/clickhouse-server/config.d/*.xml- 包含服务器配置调整的文件/etc/clickhouse-server/users.d/*.xml- 包含用户设置调整的文件/docker-entrypoint-initdb.d/- 包含数据库初始化脚本的文件夹 (见下文) 。
Linux 能力
配置
以自定义配置启动服务器实例
以自定义用户身份启动 服务器
--user 参数,并将 /var/lib/clickhouse 和 /var/log/clickhouse-server 挂载到容器内。否则,镜像会报错并无法启动。
以 root 身份启动服务器
如何在启动时创建默认数据库和用户
default 的用户) 。你可以通过环境变量 CLICKHOUSE_DB、CLICKHOUSE_USER、CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT 和 CLICKHOUSE_PASSWORD 来实现:
管理 default 用户
CLICKHOUSE_USER、CLICKHOUSE_PASSWORD 或 CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT,则 default 用户默认会禁用网络访问。
还有一种方法可以通过将环境变量 CLICKHOUSE_SKIP_USER_SETUP 设置为 1,以不安全的方式启用 default 用户:
如何扩展此镜像
/docker-entrypoint-initdb.d 目录下添加一个或多个 *.sql、*.sql.gz 或 *.sh 脚本。入口点调用 initdb 后,会运行所有 *.sql 文件、执行所有可执行的 *.sh 脚本,并 source 该目录中找到的所有不可执行 *.sh 脚本,以便在服务启动前完成进一步的初始化。
/docker-entrypoint-initdb.d 目录下的脚本会按文件名字母顺序依次执行。如果这些脚本之间存在依赖关系 (例如,创建视图的脚本必须在创建其引用表的脚本之后运行) ,请确保文件名的排序顺序正确。CLICKHOUSE_USER 和 CLICKHOUSE_PASSWORD,初始化期间 clickhouse-client 会使用它们。
例如,要添加另一个用户和数据库,请将以下内容添加到 /docker-entrypoint-initdb.d/init-db.sh: