Windows Docker中的网络存储(SMB / CIFS)

时间:2018-10-31 13:40:12

标签: docker storage smb unc

我试图在开发环境中将SMB网络存储映射到Docker,使其以与共享本地驱动器相同的方式可用于容器。这意味着,对于整个Docker VM,不是单个容器。另一个应用程序需要通过SMB访问进行网络存储,但是它在另一个域中,因此我无法从本地驱动器共享任何内容。 Windows网络驱动器也不适用于Docker。

当前的解决方法是在Docker上打开嵌套的shell,以访问VM,然后挂载网络存储。我将其作为Windows批处理文件尝试过,但它在第一个shell提示符处停止,并且不再通过“ echo”输入。

docker run --rm -it --privileged --pid=host justincormack/nsenter1
echo ctr -n services.linuxkit task exec -t --exec-id foo docker-ce /bin/sh
echo mkdir host_mnt/mystorage
echo mkdir host_mnt/mystorage/Videos
echo mkdir host_mnt/mystorage/Videos/my-private-storage
echo mount -v -t cifs -o username=myname,password=p@s$w0rd,file_mode=0777,dir_mode=0777,vers=2.0,uid=1234,gid=1234 //mystorage.mycompany.com/Videos/my-private-storage /host_mnt/mystorage/Videos/my-private-storage
echo exit
echo exit

在控制台中键入此内容(不带“ echo”),此后需要删除/重新启动Docker容器。

有什么方法可以在Docker启动时轻松地将网络驱动器映射到Docker吗?或通过其他任何方式轻松使用SMB资源?

1 个答案:

答案 0 :(得分:0)

我认为您要面对的最大问题是,用于Windows的Docker的整个Moby VM都有一个只读文件系统。如果您只是尝试直接从Moby本身进行挂载,则会发现它缺少CIFS / NFS的辅助应用程序。

mount: /mnt: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.

在大多数环境中,我们只会安装cifs-utils或nfs-common,但是由于它是只读文件系统,所以我想不出一种方法来使其正常工作。