似乎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':没有这样的文件或目录
错误:for 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
)!
答案 0 :(得分:3)
./语法对我来说在Win 10环境中很有效。
volumes:
- ./mdata/:/data/db/
- ./logs/:/var/log/mongodb/mongod.log
- ./mongod.cfg:/etc/mongod.conf.orig