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

网络磁盘无法挂载到Astronomer Docker容器?原因及解决方法

问题描述

我在Windows 11主机的本地网络中有一个网络驱动器(示例地址为10.10.10.10),执行命令:

net use O: \\10.10.10.10\share /user:login "password"

可在资源管理器中正常挂载并登录。但尝试在Astronomer中挂载时,在docker-compose.override.yml中写入:

version: "3.1"
services: 
  scheduler: 
    volumes: 
      - nfsmountCC:/mnt/share:rw
volumes: 
  nfsmountCC: 
    driver: local 
    driver_opts: 
      type: cifs 
      o: "username=login,password=password,iud=astro,vers=3.0" 
      device: "//10.10.10.10/share"

创建容器时出现错误:

Error: error building, (re)creating or starting project containers: Error response from daemon: error while mounting volume '/var/lib/docker/volumes/work_b6bd7d_nfsmountCC/_data': failed to mount local volume: mount :/share/:/var/lib/docker/volumes/work_b6bd7d_nfsmountCC/_data, data: addr=10.10.10.10: connection refused.

而使用相同卷配置的普通nginx容器(docker-compose.yaml如下)却能正常访问/mnt/share目录下的文件:

services:
  app:
    image: nginx:latest
    volumes:
      - nfsmountCC:/mnt/share:rw

volumes:
  nfsmountCC:
    driver: local
    driver_opts:
      type: cifs
      o: "username=login,password=password,vers=3.0"
      device: "//10.10.10.10/share"

我使用的是带WSL2后端的Docker Desktop,请问为何无法在Astronomer中挂载该磁盘?如何实现可读写的挂载?


原因分析与解决方案

核心原因

  1. 无效配置参数:Astronomer卷配置中的iud=astro是拼写错误,正确参数应为uid=astro,该错误会导致挂载逻辑异常,触发连接失败。
  2. 网络隔离差异:Astronomer默认使用自定义Docker网络,而普通nginx容器默认用bridge网络。WSL2环境中,自定义网络可能无法直接访问Windows主机侧的SMB/CIFS共享,导致连接拒绝。

解决步骤

步骤1:修正参数拼写错误

修改docker-compose.override.yml中的o选项,将错误的iud=astro替换为uid=astro(或直接移除该参数,若无需指定用户ID):

version: "3.1"
services: 
  scheduler: 
    volumes: 
      - nfsmountCC:/mnt/share:rw
volumes: 
  nfsmountCC: 
    driver: local 
    driver_opts: 
      type: cifs 
      o: "username=login,password=password,uid=astro,vers=3.0" 
      device: "//10.10.10.10/share"

步骤2:统一容器网络模式

如果修正参数后仍报错,为Astronomer的scheduler服务指定与nginx一致的bridge网络模式,确保网络连通性:

version: "3.1"
services: 
  scheduler: 
    volumes: 
      - nfsmountCC:/mnt/share:rw
    network_mode: bridge
volumes: 
  nfsmountCC: 
    driver: local 
    driver_opts: 
      type: cifs 
      o: "username=login,password=password,uid=astro,vers=3.0" 
      device: "//10.10.10.10/share"

步骤3:验证WSL2基础连通性

在WSL2终端中手动测试挂载共享,排除底层网络问题:

sudo mount -t cifs //10.10.10.10/share /tmp/testmount -o username=login,password=password,vers=3.0

若挂载失败,需检查:

  • Windows防火墙是否允许SMB(端口445)流量
  • WSL2网段是否与共享所在网络一致
  • 共享权限是否允许WSL2主机访问

步骤4:备选方案:通过Windows映射路径挂载

如果直接CIFS挂载仍有问题,可先在Windows主机用net use挂载共享到O:,再通过WSL2映射Windows盘符后绑定挂载到容器:

  1. 在WSL2终端挂载Windows盘符:
sudo mkdir /mnt/o
sudo mount -t drvfs O: /mnt/o
  1. 修改docker-compose.override.yml使用绑定挂载:
version: "3.1"
services: 
  scheduler: 
    volumes: 
      - /mnt/o:/mnt/share:rw

内容的提问来源于stack exchange,提问作者Sergey Bakaev Rettley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:24:53