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

EC2 linux/arm64实例Docker升级后构建报错:frontend grpc server意外关闭

解决Docker BuildKit构建报错"frontend grpc server closed unexpectedly"(EC2 linux/arm64环境)

问题背景

在EC2 linux/arm64实例上升级Docker到25.0.3后,执行以下构建命令:

DOCKER_BUILDKIT=1 docker build --ssh default -f ../containers/api/Dockerfile . -t api-test:latest --target setup

出现报错:

ERROR: failed to solve: frontend grpc server closed unexpectedly

当前Docker环境版本信息:

  • Client:
    • Version: 25.0.3
    • API version: 1.44
    • Go version: go1.20.12
    • Git commit: 4debf41
    • Built: Wed Feb 28 00:29:45 2024
    • OS/Arch: linux/amd64
    • Context: default
  • Server: Engine:
    • Version: 25.0.3
    • API version: 1.44 (minimum version 1.24)
    • Go version: go1.20.12
    • Git commit: f417435
    • Built: Wed Feb 28 00:30:22 2024
    • OS/Arch: linux/amd64
    • Experimental: false
  • containerd:
    • Version: 1.3.2
    • GitCommit: ff48f57fc83a8c44cf4ad5d672424a98ba37ded6
  • runc:
    • Version: 1.0.0-rc10
    • GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
  • docker-init:
    • Version: 0.19.0
    • GitCommit: de40ad0

同一构建命令在M2 Mac的Docker 26.1.4(build 5650f9b)环境下可正常执行。

解决方案

1. 升级containerd版本

当前使用的containerd 1.3.2版本过旧,与Docker 25.0.3存在兼容性问题,Docker 25.x系列推荐搭配containerd 1.7+版本使用:

  • 停止Docker服务:
    sudo systemctl stop docker
    
  • 卸载旧版containerd:
    sudo apt remove -y containerd.io
    
  • 安装适配版本(以1.7.18为例):
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
    echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
    sudo apt update
    sudo apt install -y containerd.io=1.7.18-1
    
  • 配置containerd并启用SystemdCgroup:
    sudo containerd config default | sudo tee /etc/containerd/config.toml
    sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
    
  • 重启服务:
    sudo systemctl start containerd
    sudo systemctl start docker
    

2. 升级Docker至与Mac环境一致的版本

既然Docker 26.1.4在M2 Mac上可正常运行,直接将EC2上的Docker升级到同版本:

  • 卸载当前Docker:
    sudo apt remove -y docker-ce docker-ce-cli containerd.io
    
  • 安装Docker 26.1.4:
    sudo apt update
    sudo apt install -y docker-ce=5:26.1.4-1~ubuntu.$(lsb_release -rs)~$(lsb_release -cs) docker-ce-cli=5:26.1.4-1~ubuntu.$(lsb_release -rs)~$(lsb_release -cs) containerd.io
    
  • 验证版本:
    docker --version
    

3. 临时禁用BuildKit验证

若暂时无法升级,可先禁用BuildKit测试构建是否正常:

docker build --ssh default -f ../containers/api/Dockerfile . -t api-test:latest --target setup

如果构建成功,说明问题确实源于BuildKit与当前环境的兼容性,优先执行前两个升级方案。

4. 重置BuildKit状态

清理BuildKit缓存并重启服务,排除配置异常:

sudo rm -rf /var/lib/docker/buildkit
sudo systemctl restart docker

内容的提问来源于stack exchange,提问作者i.am.it

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:30:02