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
命令。
通过这种方式,容器可以访问与主机相同的网络接口,并且不会创建虚拟接口。
我正在尝试从 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
命令。
通过这种方式,容器可以访问与主机相同的网络接口,并且不会创建虚拟接口。