使用 Docker 安装 ClickHouse
版本
latest标签指向最新稳定分支的最新发布版本。22.2这类分支标签指向对应分支的最新发布版本。22.2.3和22.2.3.5这类完整版本标签指向对应的发布版本。head标签基于默认分支上的最新提交构建。- 每个标签都可以带有可选的
-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且包含补丁。作为一种临时变通方案,你也可以 改用docker run --security-opt seccomp=unconfined,但这会带来安全方面的影响。
如何使用该镜像
启动服务器实例
default 用户身份运行。
通过原生客户端连接
使用 curl 连接
停止 / 删除容器
网络
预定义的用户
default 默认没有网络访问权限,除非设置了密码,
请参见下文的“如何在启动时创建默认 database 和用户”以及“管理 default 用户”--network=host 让容器直接使用主机端口
(也有助于获得更好的网络性能) :
上述示例中的默认用户仅适用于来自 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 身份启动服务器
如何在启动时创建默认 database 和用户
default 的用户) 和 database。你可以通过环境变量 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: