我正在尝试将网络驱动器挂接为卷。这是我正在尝试的命令
docker run -v //NetworkDirectory/Folder:/data alpine ls /data
我正在Windows上运行此命令,数据目录将为空。如何将此网络目录作为卷装载到Windows主机上并在容器内访问它?
使用本地目录可以正常工作,因此下面的命令可以正常工作。
docker run -v c:/Users/:/data alpine ls /data
我可以让它在linux中工作,因为我可以在本地目录上使用cifs-utils挂载共享,并将该目录用作卷。
编辑:看起来这是不可能的:How to mount network Volume in Docker for Windows (Windows 10)
3条答案
按热度按时间c86crjj01#
我的同事想出了这个,它与我们公司的网络驱动器一起工作,它可能会帮助外面的人。
我们首先创建一个名为
mydockervolume
的Docker卷。--driver
指定卷驱动程序名称--opt
设置驱动程序特定的选项。我猜它们是在容器启动时提供给linuxmount
命令的。然后,我们可以测试卷是否与
docker run -v mydockervolume:/data alpine ls /data
Here you can read more about driver specific options and docker volume create
8dtrkrch2#
我在Docker上找不到本机CIFS存储驱动程序。
您可以使用如下外部宗卷插件:https://github.com/ContainX/docker-volume-netshare,支持NFS、AWS EFS和桑巴舞/CIFS
tez616oj3#
我在寻找类似的东西时发现了这一点,但发现虽然它很旧,但缺少一些关键信息,可能是因为当时没有这些信息
我认为CIFS存储仅适用于连接到Windows系统时,因为我认为Linux根本不使用它。
NFS也可以做到这一点,它的安全性较低,但几乎所有东西都支持它。
您可以使用与CIFS卷类似的方式创建NFS卷,只是需要做一些更改。
在WSL 2上使用NFS时,首先需要将NFS服务安装到Linux主机操作系统中。我认为CIFS需要类似的服务,但由于我没有使用它,因此我不确定。在我的情况下,这是Ubuntu,但您应该能够通过查找您的系统等效项来找到合适的服务
就是这样。这将安装服务,使NFS工作在Docker(它花了我永远意识到,因为它似乎没有提到需要的任何地方)
在设备上,您需要为NFS文件夹设置NFS权限,在我的情况下,这将在
folder
文件夹中完成,挂载是其中的一个文件夹。这很好。在我的情况下,NAS(即我的服务器)挂载到NAS中的#IP#/volume1/folder
,我在目录结构中从未看到volume1
。但是当我设置NFS权限时,它会显示在设置页面中。我没有包括volume1
部分,因为您的系统可能会有所不同&根据您的NFS共享,您需要IP后的完整路径,无论它是什么。nolock
选项经常需要,但可能不在您的系统上。它只是禁用“锁定”文件的功能。soft
选项意味着如果系统无法连接到挂载目录,它将不会挂起。如果您需要它只在挂载目录存在时才工作,您可以将其改为hard
。rw
(读/写)选项用于***读/写***,ro
(只读)用于***只读***由于我个人并不使用CIFS卷,因此设置的选项只是我找到的示例中的选项,您需要了解这些选项是否必要。
username
和password
是必需的,并且必须包含在CIFS中uid
和gid
是Linux用户和组设置,我认为应该设置为您的容器所需要的,因为据我所知,Windows不使用它们file_mode=0777
和dir_mode=0777
是Linux读/写权限,本质上是chmod 0777
,提供可以访问文件的任何内容的读/写/执行权限(详细信息链接#4)&这也适用于Docker容器,而不是CIFS主机noexec
与执行权限有关,但我不认为它在这里实际上起作用,nosuid
限制它访问特定于特定用户ID的文件的能力,除非您知道需要删除,否则不应删除,nosetuids
意味着它不会为新创建的文件设置UID和GUID,nodev
意味着无法访问/创建装载点上的设备,vers=1.0
我认为是兼容性的一个备用选项,我个人不会包含它,除非出现问题或没有它就无法工作在这些示例中,我以读/写模式将
//NET.WORK.DRIVE.IP/folder/on/addr/device
装载到名为“my-docker-volume
“的卷。CIFS卷使用用户supercool
和密码noboDyCanGue55
NFS通过CLI
CIFS从CLI(如果Docker安装在Windows以外的系统上,则可能无法工作,只能连接到Windows系统上的IP)
这也可以在Docker Compose或Portainer中完成。当你在那里完成时,你需要在合成文件的底部添加一个
Volumes:
,没有缩进,与services:
处于同一级别在此示例中,我将装载卷
my-nfs-volume
从//10.11.12.13/folder/on/NFS/device
装载到“my-nfs-volume
“,并将容器中的my-nfs-volume
装载到/nfs
my-cifs-volume
从//10.11.12.14/folder/on/CIFS/device
(具有来自用户supercool
的权限,密码为noboDyCanGue55
)以读/写模式访问“my-cifs-volume
“,并将容器中的该内容装载到/cifs
更多详细信息,请访问: