最后,通过在Oracle VM VirtualBox
管理器中添加共享文件夹并禁用路径转换,了解了如何将Windows Docker Toolbox升级到v1.12.5并使我的卷正常工作。如果您使用Windows 10+,则最好使用Windows的较新Docker。
1st升级痛苦:
- 首先卸载VirtualBox。
- 是的,可能会破坏其他工具,例如Android Studio。谢谢Docker :(
- 安装新版本的Docker Toolbox。
Redis数据库示例:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379"
volumes:
- "/var/db/redis:/data:rw"
在Docker快速入门终端....
- 运行
docker-machine stop default
-确保虚拟机受惊
在Oracle VM VirtualBox Manager中...
default
通过或命令行在VM中
添加了共享文件夹
D:\Projects\MyProject\db
=> /var/db
在docker-compose.yml
...
- 映射的redis量为:
"/var/db/redis:/data:rw"
在Docker快速入门终端....
- 设置
COMPOSE_CONVERT_WINDOWS_PATHS=0
(对于工具箱版本> = 1.9.0)
- 运行
docker-machine start default
以重新启动VM。
cd D:\Projects\MyProject\
docker-compose up
应该现在工作。
现在在以下位置创建redis数据库 D:\Projects\MyProject\db\redis\dump.rdb
为什么要避免相对主机路径?
我避免使用Windows工具箱的相对主机路径,因为它们可能会引入无效的'\'字符。它不像使用相对路径那样好,docker-compose.yml
但是至少我的同伴开发人员可以轻松地做到这一点,即使他们的项目文件夹位于其他位置而不必修改docker-compose.yml
文件(对于SCM来说也不好)。
原始发行
仅供参考...这是当我使用漂亮的干净相对路径(过去在旧版本中正常工作)时遇到的原始错误。我的体积映射过去只是"./db/redis:/data:rw"
ERROR: for redis Cannot create container for service redis: Invalid bind mount spec "D:\\Projects\\MyProject\\db\\redis:/data:rw": Invalid volume specification: 'D:\Projects\MyProject\db\redis:/data
这有两个原因..
- 它无法访问
D:
驱动器
- 卷路径不能包含
\
字符
docker-compose
添加他们,然后责怪你!
- 使用
COMPOSE_CONVERT_WINDOWS_PATHS=0
制止这种废话。
我建议您在docker-compose.yml
文件中记录其他VM共享文件夹映射,因为您可能需要再次卸载VirtualBox并重置共享文件夹,无论如何,您的同胞开发人员都会为此而爱上您。