在Windows 10上将网络文件夹挂载到Docker容器

时间:2016-10-14 17:54:04

标签: windows docker

我尝试使用以下语法在Windows 10上安装带有Docker容器的网络文件夹。使用UNC路径不起作用。我在Hyper-V和Docker的稳定版本下运行它。

docker run -v \\some\windows\network\path:/some/local/container

在我使用Docker Toolbox之前,我可以使用VirtualBox将网络共享映射到内部文件夹。我已尝试将网络共享添加为驱动器,但它并未在设置面板下显示为可用驱动器。

目前我使用mklink将本地文件夹镜像到网络文件夹,但我不想依赖此作为解决方案。

3 个答案:

答案 0 :(得分:1)

使用基于Windows的容器执行此操作

转到Microsoft文档https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/persistent-storage#smb-mounts

您将找到有关如何将网络驱动器作为卷安装在Windows容器中的信息。


使用基于Linux的容器执行此操作

当前(截至2019-11-13)是不可能的。 但是,您可以使用插件:https://github.com/ContainX/docker-volume-netshare

我没有使用它,所以我没有使用经验。只是在我的研究过程中发现的,并希望将其添加为潜在的解决方案。

推荐的解决方案

在研究此主题时,我觉得您可能应该从容器内部安装驱动器。您可以通过文件或参数传递所需的凭据。

凭据作为文件的示例

您需要将软件包cifs-utils安装在容器中,添加

COPY ./.smbcredentials /.smbcredentials

到Dockerfile,然后在容器启动后运行以下命令:

sudo mount -t cifs -o file_mode=0600,dir_mode=0755,credentials=/.smbcredentials //192.168.1.XXX/share /mnt


可能的重复

关于此主题,这里还有另一个stackoverflow线程: Docker add network drive as volume on windows

那里提供的答案(https://stackoverflow.com/a/57510166/12338776)对我来说不起作用。

答案 1 :(得分:0)

我不是Windows用户,因此我无法测试此答案,但looking at the Docker code您似乎需要在UITextField之前添加路径。

所以你应该跑:

\\?\

答案 2 :(得分:-2)

您不应该这样做,因为docker期望文件是本地文件,并且由于连接不良而导致读/写操作超时。

您应该尝试使软件直接连接到网络共享。