docker - 使用 Docker Compose 在 Linux 容器上挂载 Windows 网络共享
问题描述
我有一组位于 Windows 网络共享上的图像,我希望在我的 Linux 容器中可以访问这些图像。我尝试将图像添加docker-compose.yml
为如下所示的卷。
version: "3"
services:
GetImages.www:
container_name: GetImages.www
build: .
ports:
- "8080:8080"
volumes:
- ../src/:/var/www/vhosts/GetImages/src/
- I:\Path\To\Images\On\Network\:/var/www/vhosts/GetImages/PresenterImages
有了上面,docker-compose up
返回这个错误。
Cannot start service GetImages.www: error while creating mount source path '/host_mnt/uC/server/share/Path/To/Images/On/Network': mkdir /host_mnt/uC: operation not permitted.
我尝试在与包含该选项.env
的目录相同的目录中创建一个文件,但它对错误消息没有任何影响。docker-compose.yml
COMPOSE_CONVERT_WINDOWS_PATHS=1
有趣的是,当docker-compose up
docker 尝试共享本地 C: 驱动器上的目录时,该目录与服务器共享的 UNC 路径匹配,而不是 UNC 路径本身。详细来说,UNC 路径是\\server\share\Path\To\Images\On\Network
,并且在 Docker 桌面 > 资源 > 文件共享中,添加了一个路径C:\server\share\Path\To\Images\On\Network
。
我需要做什么才能从我的 docker 容器中访问此网络共享?
解决方案
您可以使用另一种语法来挂载卷,这似乎效果更好:
version: "3"
services:
GetImages.www:
container_name: GetImages.www
build: .
ports:
- "8080:8080"
volumes:
- type: bind
source: ..\src
target: /var/www/vhosts/GetImages/src/
- type: bind
source: I:\Path\To\Images\On\Network\
target: /var/www/vhosts/GetImages/PresenterImages
这使用了较旧的绑定挂载功能,但似乎可以正常工作。
推荐阅读
- docker - “docker pull redis”在下载时卡住了
- django - 有没有办法在 django 表单中动态过滤查询集以获得正确的外键?
- syntax-error - 为什么这个简单的 LISP 函数会抛出错误?
- javascript - 如何在 jQuery timepicker 插件中设置最大时间限制
- java - 获取 URL 参数并在 HTML 页面中打印
- python - QFileDialog 总是在主窗口后面打开
- python-3.x - 如何迭代由元组列表组成的字典?
- module - Joomla 3.9.13 中的随机图像模块有问题吗?
- php - 关于设计课程系统。我应该何时检查到期或未到期的作业?我应该把这个逻辑放在哪里?
- angular - primeNG 表上的可编辑行问题