root@rbm-AZ5jvAxo:/www/4444-dmx-api# docker-compose pull && docker-compose up -d...

2026年05月18日 22:53 24.37 秒 success

错误信息

root@rbm-AZ5jvAxo:/www/4444-dmx-api# docker-compose pull && docker-compose up -d [+] Pulling 1/2 ! redis Interrupted 0.2s ⠙ new-api Pulling 0.2s no matching manifest for linux/amd64 in the manifest list entries root@rbm-AZ5jvAxo:/www/4444-dmx-api#

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译


原文:no matching manifest for linux/amd64 in the manifest list entries
译文:在清单条目中没有找到与linux/amd64匹配的清单

2. 🎯 原因分析


根本原因:您正在尝试拉取的 new-api 镜像不支持您当前的系统架构(linux/amd64,即x86_64架构)。
位置:错误发生在 docker-compose pull 拉取 new-api 服务镜像的阶段。
上下文redis 镜像的拉取过程显示为 Interrupted,这可能是因为您按下了中断键(如Ctrl+C),或者是由于网络问题导致拉取开始但未完成。但主要且持续的错误是 new-api 的架构不匹配。

3. 💡 解决方案

步骤一:确认镜像支持的架构
运行以下命令,检查目标镜像(new-api)支持哪些架构:

# 请将 `your-repo/new-api:tag` 替换为您的实际镜像地址
docker manifest inspect your-repo/new-api:tag

在输出的 "platforms" 字段中查找 linux/amd64

步骤二:根据结果采取行动

方案A(如果镜像支持amd64但拉取失败):可能是镜像仓库或网络缓存问题。尝试直接拉取并明确指定平台:

    # 明确指定平台拉取
    docker pull --platform linux/amd64 your-repo/new-api:tag
    

然后再次执行 docker-compose up -d

方案B(如果镜像确实不支持amd64)
1. 寻找替代镜像:查找支持 linux/amd64 架构的替代镜像。
2. 自行构建:如果项目提供Dockerfile,可以在您的机器上构建支持amd64的镜像:

        # 进入包含Dockerfile的目录
        docker build -t your-repo/new-api:tag .
        

然后修改 docker-compose.yml 文件,将 image: 改为本地构建的镜像名,或者使用 build: 指令指定Dockerfile路径。

步骤三:处理中断的Redis镜像
重新拉取Redis镜像,它应该能正常工作:

docker-compose pull redis

4. 🛡️ 预防措施


  • 部署前检查:在混合架构环境(如Apple M系列芯片Mac + Linux云服务器)中工作时,部署前务必确认服务镜像对所有目标平台(linux/amd64, linux/arm64)的支持情况。

  • 使用多架构标签:在编写 docker-compose.yml 时,尽量使用官方或知名镜像,并采用如 lateststable 这类通常会提供多架构支持的标签。