Docker 与共享 windows 文件夹

Docker vs. Shared windows folders

我正在尝试从 Docker 上的 docker 容器内访问远程共享文件夹,用于 Windows。

在容器内 运行 dir \target\share 生成 "The network path was not found."。可以从容器内部 ping 目标,并且可以从主机系统访问共享。

使用的图片是microsoft/dotnet-framework:4.7.2-sdk,我是运行它,只有-it选项用于测试。

我缺少什么才能让它工作?

您可以使用docker volumes在容器中挂载一个folder/network共享

在主机上创建 docker 卷:

$ docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo

在容器上装载卷:

$ docker run -d \
  --name devtest \
  --mount source=foo,target=/app \
  nginx:latest

更多示例here

SMB 协议适用于同一 LAN 中的主机。默认情况下,docker 容器在 NAT 后面有一个虚拟网络接口,因此容器不再位于同一个 LAN 中。这就是为什么您可以 ping 通目标,但无法访问共享文件夹的原因。

更简单的解决方案是将选项 --network host 添加到 docker run 命令。 通过这种方式,容器可以访问与主机相同的网络接口,并且不会创建虚拟接口。