首页 > 解决方案 > 使用 Docker Compose 在 Linux 容器上挂载 Windows 网络共享

问题描述

我有一组位于 Windows 网络共享上的图像,我希望在我的 Linux 容器中可以访问这些图像。我尝试将图像添加docker-compose.yml为如下所示的卷。

version: "3"
services: 
  GetImages.www:
    container_name: GetImages.www
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ../src/:/var/www/vhosts/GetImages/src/
      - I:\Path\To\Images\On\Network\:/var/www/vhosts/GetImages/PresenterImages

有了上面,docker-compose up返回这个错误。

Cannot start service GetImages.www: error while creating mount source path '/host_mnt/uC/server/share/Path/To/Images/On/Network': mkdir /host_mnt/uC: operation not permitted.

我尝试在与包含该选项.env的目录相同的目录中创建一个文件,但它对错误消息没有任何影响。docker-compose.ymlCOMPOSE_CONVERT_WINDOWS_PATHS=1

有趣的是,当docker-compose updocker 尝试共享本地 C: 驱动器上的目录时,该目录与服务器共享的 UNC 路径匹配,而不是 UNC 路径本身。详细来说,UNC 路径是\\server\share\Path\To\Images\On\Network,并且在 Docker 桌面 > 资源 > 文件共享中,添加了一个路径C:\server\share\Path\To\Images\On\Network

我需要做什么才能从我的 docker 容器中访问此网络共享?

标签: dockerdocker-compose

解决方案


您可以使用另一种语法来挂载卷,这似乎效果更好:

version: "3"
services: 
  GetImages.www:
    container_name: GetImages.www
    build: .
    ports:
      - "8080:8080"
    volumes:
        - type: bind
          source: ..\src
          target: /var/www/vhosts/GetImages/src/
        - type: bind
          source: I:\Path\To\Images\On\Network\
          target: /var/www/vhosts/GetImages/PresenterImages

这使用了较旧的绑定挂载功能,但似乎可以正常工作。


推荐阅读