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

如何实现不同主机上的Docker容器共享存储卷?

跨Docker Swarm节点共享文件的可行解决方案

针对你的场景,以下是几个可落地的解决方案:

方案1:使用NFS分布式存储卷(最直接的跨节点共享方案)

本地Docker持久化卷仅支持单节点,改用NFS卷可以实现Swarm集群跨节点共享:

  1. 在主机199上搭建NFS服务,将iSpy保存文件的目录设置为共享目录(具体步骤参考对应系统的NFS配置,比如Ubuntu下安装nfs-kernel-server,配置/etc/exports)
  2. 在Swarm集群中创建NFS类型的持久化卷:
docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=192.168.x.199,rw \
  --opt device=:/path/to/ispy/save/directory \
  ispy_shared_volume
  1. 更新iSpy容器的部署配置,将该卷挂载到iSpy的文件保存目录;同时更新Node-red容器的部署配置,将同一卷挂载到Node-red可访问的路径下。

方案2:通过HTTP文件服务实现跨节点文件访问

在主机199上部署轻量文件服务容器,让Node-red通过HTTP请求获取文件:

  1. 在Swarm中部署一个nginx服务,调度到199节点,挂载iSpy的文件目录到nginx的静态文件目录:
version: '3.8'
services:
  ispy-file-server:
    image: nginx:alpine
    deploy:
      placement:
        constraints:
          - node.hostname == 199
    volumes:
      - /path/to/ispy/save/directory:/usr/share/nginx/html
    networks:
      - your-overlay-network
networks:
  your-overlay-network:
    external: true
  1. 在Node-red的流程中,通过http request节点访问http://ispy-file-server/[文件名]获取文件,再交给deepstack处理。

方案3:在Node-red容器内直接挂载SMB共享

之前的问题是未在容器内部正确挂载SMB,改用Docker CIFS卷实现容器内直接访问:

  1. 创建SMB类型的Docker卷:
docker volume create --driver local \
  --opt type=cifs \
  --opt o=username=your_smb_user,password=your_smb_pass,addr=192.168.x.199 \
  --opt device=//192.168.x.199/ispy_smb_share \
  ispy_smb_volume
  1. 将该卷挂载到Node-red容器的指定路径(比如/data/ispy-files),Node-red即可直接读取该路径下的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:05:22