容器中怎么挂载Windows的共享目录?
什么是Windows共享目录?
Windows 的共享文件夹主要通过 SMB(Server Message Block) 协议来实现。SMB协议最初由IBM开发用于在网络上共享文件、打印机等资源。后来微软将其纳入了 Windows 操作系统,并加入了自己的扩展和改进。
Linux 系统可以读写 Windows 共享文件夹,因为 Linux 也支持 SMB 协议。常见的实现有:
- Samba:Samba 是在 Linux 和 Unix 系统上的一个开源软件套件,可以让 Linux 系统加入 Windows 文件和打印机共享服务。它既可以作为服务器共享文件给 Windows 客户端,也可以作为客户端访问 Windows 共享资源。
- CIFS(通用互联网文件系统):CIFS 是微软对 SMB 协议的进一步扩展和改进,在网络上提供文件共享服务。大多数现代 Linux 发行版都内置了对 CIFS 的支持,可以在文件管理器中直接输入 Windows 共享路径来挂载访问。
要在 Linux 上挂载访问 Windows 共享文件夹,通常使用下面的命令:
|
|
其中 WindowsIP 是 Windows 机器 IP,ShareName 是共享文件夹名称,/mnt/ShareFolder 是挂载到 Linux 的本地目录路径。
总的来说,SMB/CIFS 是 Windows 和 Linux 之间实现文件共享的标准协议,Linux 通过内置的 CIFS 支持或安装 Samba 软件包,就可以方便地访问 Windows 共享文件夹。
容器上的具体实现过程
基础镜像需要引入cifs的组件:
|
|
由于容器安全性的限制,容器里面使用mount是被限制的,我们启动的时候需要增加--cap-add SYS_ADMIN
和 --cap-add DAC_READ_SEARCH
参数具体如下:
|
|
如果是swarm里面的service:
|
|
然后你就可以在容器中进行挂载了(一般来说这个步骤都是由程序自己通过读取配置自动完成)
|
|
此时就可以从容器中像读取本地文件一样读取(或者读写)共享目录了。