【发布时间】:2018-08-07 15:08:24
【问题描述】:
好像是this question has already been asked by another poster,但是没有人回答。我有更多关于这件事的信息,所以我重新问了同样的问题 - 但有很多额外的材料。
我在 Windows 10 上运行 Docker。我已将 Docker 配置为使用 Linux 容器(不是 Windows 容器)。我将 C 盘配置为共享驱动器。
问题
我有以下名为 wp.yml 的 docker-compose 文件:
version: '3.2'
services:
db:
image: mysql:5.7
volumes:
- type: volume
source: wp_dbA
target: /var/lib/mysql
restart: always
volumes:
wp_dbA:
driver_opts:
type: none
device: ./wp-db
o: bind
我执行如下:
c:\repos\wpsand\wpA> docker-compose -f wp.yml up -d
我收到以下错误:
错误:对于 wpa_db_1 无法为服务 db 创建容器:使用选项安装卷时出错:type='none' device='./wp-db' o='bind': no such file or directory
错误:对于 db 无法为服务 db 创建容器:使用选项安装卷时出错:type='none' device='./wp-db' o='bind':没有这样的文件或目录 错误:启动项目时遇到错误。
尽管有消息,但文件夹wp-db 确实已经存在,位于此处:
c:/repos/wpsand/wpA/wp-db
线索...
尽管出现上述错误,但检查 docker volume ls 显示卷 wpa_wp_dbA 是新创建的。
线索#1
如果我将共享卷device 更改为使用绝对路径(例如/c/repos/wpsand/wpA),然后再次运行...我会遇到同样的问题。 但是,错误消息仍然说找不到具有相对路径./wp-db 的设备。
显然,重用名为wp_dbA 的共享卷会导致忽略任何新指定的路径。原来的./wp-db 是它将尝试使用的。
线索#2
如果我恢复到相对路径,但将共享卷的名称更改为“wp_dbB”,我仍然会收到同样的错误。
线索#3
这结合了上面的#1 和#2。如果我发明一个新的共享卷名并使用绝对路径,它就可以工作!我的容器已成功启动。很遗憾, 我不再使用我想要的相对路径。
线索#4
现在我的容器可以工作了,我docker-compose down 并再次更改 docker-compose 文件。我把相对路径放回去,然后“组合起来”。 有效!
结论?
看起来相对路径根本不起作用。但是我一直看到使用相同的共享卷相对路径表示法在线发布的 docker-compose 文件。也许它适用于 Docker,但不适用于 Windows 上的 Docker?
任何人都可以提出解决方法吗?
更新!
我发现this SO post 几乎有一个相对路径解决方法。我更新了我的 compose 文件以使用 ${PWD} 表示法,并从我的 Git Bash shell 启动它。现在我得到了这个错误:
$ docker-compose up -d
Creating wpa_db_1 ... error
Creating wpa_db_1 ...
ERROR: for wpa_db_1 Cannot create container for service db: error
while mounting volume with options: type='none'
device='C:/repos/wpsand/wpA/wp-db' o='bind': no such file or directory
ERROR: for db Cannot create container for service db: error while
mounting volume with options: type='none' device='C:/repos/wpsand/wpA/wp-db'
o='bind': no such file or directory
Encountered errors while bringing up the project.
这几乎奏效了!如果 ${PWD} 扩展为 Linux 挂载符号 (/c/repos/wpsand/wpA/wp-db) 就好了!
【问题讨论】:
-
我在 Docker for Windows 上遇到了非常相似的问题。我倾向于发现放入相对路径而不是共享卷名确实有效,但卷部分下的卷的相对路径不起作用。不知道为什么
标签: docker docker-compose docker-volume