【问题标题】:SMB/CIFS volume in Docker-compose on WindowsWindows 上 Docker-compose 中的 SMB/CIFS 卷
【发布时间】:2021-04-02 15:00:41
【问题描述】:

我有一个带有共享 CIFS/SMB 共享的 NAS,我想在 Windows 上使用 docker-compose 将其挂载为卷。

我已经阅读了多个建议(例如使用插件,将其安装在 Windows 中以为其提供驱动器号),但没有找到任何可以工作的东西。 我知道这不是 100% 简单的,因为我是从另一个操作系统内部访问它。但这听起来应该是可能的。

假设我有一个网络路径\\my-nas\share,我将如何在 Windows 主机上使用 docker-compose 将其安装在 docker 容器中?

【问题讨论】:

    标签: docker docker-compose volume smb cifs


    【解决方案1】:

    我完全误解了this docker docs page 的意思

    The built-in local driver on Windows does not support any options.

    这并不意味着您不能在 Windows 中使用 cifs 驱动程序。

    解决方法很简单

    services:
      my-service:
        volumes:
          - nas-share:/container-path
    
    volumes:
    
      nas-share:
        driver_opts:
          type: cifs
          o: "username=[username],password=[password]"
          device: "//my-nas/share"
    

    用 NAS 的实际用户名和密码替换 [username][password] 即可完美运行。

    【讨论】:

    • 这对我有用,但是我必须做一个添加才能识别主机名(在这种情况下为 my-nas)与 IP 地址。在 Options 语句中,我必须添加 addr 参数。它最终看起来像这样 o: "username=[username],[password=[password],addr=my-nas 其中 my-nas 是我要连接到的服务器的主机名。我在这里找到了这个建议 [github.com/moby/moby/issues/42007]
    • 在带有 linux 容器的 windows cifs 中遇到了同样的问题,并通过将主机名替换为 ip 来使其正常工作。
    【解决方案2】:

    这对我在 WindowsServer2019 主机上使用 Windows 容器很有用。它需要 1705 或更高版本:
    https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/persistent-storage#bind-mounts

    首先将文件共享挂载到主机。
    $creds = 获取凭据 New-SmbGlobalMapping -RemotePath \contosofileserver\share1 -Credential $creds -LocalPath G:

    然后在 compose 中照常映射驱动器:

    services:
      my-service:
        volumes:
        - Z:\:/container-path
    

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 2020-02-07
      • 2018-11-30
      • 2015-03-15
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多