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

Portainer 2.14 BE更新容器报Duplicate mount point问题咨询

问题根因

该报错由Portainer 2.14 BE的Stack更新逻辑与当前Compose配置的特性共同触发:

  • 配置中web、engine两个服务均设置了固定container_name,且同时将命名卷shared-folder挂载到容器内/app/engine/shared-folder路径
  • Portainer执行Stack更新、单容器重建操作时,默认会先创建带-old后缀的旧容器备份,再启动新版本容器。创建备份容器时会完整保留原容器的挂载规则,此时shared-folder已被*-old备份容器占用,新版本容器启动时再次申请将该卷挂载到同一路径,就会抛出Duplicate mount point: /app/engine/shared-folder错误
  • 手动删除shared-folder卷后操作能成功,是因为删卷操作会连带解除所有旧容器对该卷的占用,新版本容器可正常完成挂载。
解决方案

二选一即可,不需要同时操作:

方案1:调整Portainer更新策略(无需修改Compose配置)

  • 进入对应Stack的编辑页,拉到页面底部找到Deployment updates配置区域
  • 关闭更新时保留旧容器的开关:取消勾选Recreate old containers after update,设置更新完成后自动删除旧备份容器
  • 保存配置后再执行镜像拉取、容器重建、Stack更新操作,就不会出现卷占用冲突。

方案2:修改Compose挂载配置(可保留旧容器备份能力)

如果需要保留更新时的旧容器回滚能力,给两个服务的shared-folder挂载项添加shared挂载传播参数,允许同一卷被多个容器同时挂载到同一路径。修改后的完整配置参考:

version: '3'
services:

  web:
    container_name: web
    image: company/be:latest
    volumes:
      - ./log:/app/log
      - .:/go/src/app
      - ./empty:/go/src/app/docker
      - shared-folder:/app/engine/shared-folder:shared
    ports:
      - 3010:3010
  engine:
    container_name: engine
    image: company/engine:latest
    volumes:
      - ./log:/app/log
      - .:/go/src/app
      - ./empty:/go/src/app/docker
      - shared-folder:/app/engine/shared-folder:shared

networks:
  default:
    external:
      name: production_default

volumes:
  shared-folder:
  cache:
    driver: local

配置shared传播属性后,卷内数据的读写一致性由Docker原生机制保障,不会影响原有共享文件夹的功能运行,新旧容器可同时挂载该卷不会触发冲突。

内容的提问来源于stack exchange,提问作者Stefan Wuthrich - Altafino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:15:30