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

Macbook Pro M1使用Docker运行mailhog/mailhog:latest镜像失败求助

问题描述

在Macbook Pro M1设备上,通过Docker Swarm部署mailhog/mailhog:latest镜像,使用的swarm.yml配置文件如下:

version: '3'

services:
  mailhog:
    image: 'mailhog/mailhog:latest'
    ports:
      - '8025:8025'
    deploy:
      mode: global

执行的部署命令:

docker swarm init
docker stack deploy -c swarm.yml myapp

执行docker service ls查看服务状态时,发现REPLICAS列显示为0/1,服务无法正常启动。

排查与解决步骤
  • 验证镜像架构兼容性:M1设备为ARM64架构,mailhog/mailhog:latest默认镜像可能仅支持AMD64架构,导致无法在ARM节点上运行。执行以下命令检查镜像支持的架构:
    docker pull mailhog/mailhog:latest
    docker inspect mailhog/mailhog:latest | grep Architecture
    
    若结果仅显示amd64,需改用支持ARM64的镜像标签,例如mailhog/mailhog:v1.0.1-arm64,修改swarm.yml中的image字段后重新部署。
  • 查看服务启动日志:通过日志定位具体错误原因:
    docker service logs myapp_mailhog
    
    日志会显示镜像拉取失败、端口冲突、权限不足等具体问题。
  • 确认Swarm节点状态:检查节点是否处于就绪状态:
    docker node ls
    
    确保M1设备作为Swarm管理节点状态为Ready。
  • 调整部署模式:mode: global会在每个Swarm节点部署实例,若仅单个节点,可能因调度规则或资源限制无法启动。可先改为复制模式测试:
    deploy:
      mode: replicated
      replicas: 1
    
    修改后重新执行docker stack deploy -c swarm.yml myapp。
  • 检查端口占用情况:确认本地8025端口未被其他程序占用:
    lsof -i :8025
    
    若端口被占用,修改swarm.yml中的端口映射,例如改为- '8026:8025'后重新部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:20:36