You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook M1运行ClickHouse Docker镜像出现报错如何解决

M1芯片Mac运行ClickHouse Docker镜像报错解决方案

问题原因

你判断的amd64架构镜像兼容性问题是核心原因。ClickHouse底层依赖的Go runtime、内核级系统调用对Docker的Rosetta 2转译兼容性比InfluxDB等普通应用更低,所以会出现其他amd64镜像可运行、ClickHouse无法启动的问题,最后的配置文件权限报错是启动失败过程中的衍生错误。

解决方案

  • 方案1:使用官方原生arm64架构镜像(优先推荐)
    官方ClickHouse从21.9版本开始已经原生支持arm64架构,直接拉取对应版本即可,无需转译:
    拉取镜像命令:
    docker pull clickhouse/clickhouse-server:latest
    启动时无需额外加架构参数,若用docker-compose可以在service配置中显式指定platform: linux/arm64避免拉取错误架构的镜像。同时为了避免权限报错,建议挂载配置文件时给本地文件赋予读权限,或者启动时指定user为101(clickhouse默认运行用户)。
    docker-compose部署参考配置片段:
version: '3'
services:
  clickhouse-02:
    image: clickhouse/clickhouse-server:latest
    platform: linux/arm64
    user: "101:101"
    volumes:
      # 本地配置文件需要提前赋予读权限:chmod 644 ./config.xml
      - ./config.xml:/etc/clickhouse-server/config.xml:ro
      - ./data:/var/lib/clickhouse
    ports:
      - "8123:8123"
      - "9000:9000"
  • 方案2:必须使用amd64版本镜像时的兼容方案
    如果必须使用仅支持amd64的特定版本ClickHouse镜像,按以下步骤操作:
  1. 打开Docker Desktop设置,进入「Features in Development」页面,勾选「Use Rosetta for x86/64 emulation on Apple Silicon」,保存后重启Docker
  2. 启动容器时显式指定架构,同时添加root权限避免配置文件报错,命令示例:
    docker run --platform linux/amd64 --user root -d -p 8123:8123 clickhouse/clickhouse-server:指定的amd64版本号
  • 方案3:第三方适配镜像
    如果官方镜像无法满足需求,也可以使用社区适配的arm64架构ClickHouse镜像,适配后兼容性和原生版本一致。

内容的提问来源于stack exchange,提问作者ASHMIL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:15:02