我遇到了一个似乎特定于 Windows 的 Vagrant/Docker-Compose 问题。以下是设置和编排的概述:
- Vagrant 使用 boot2docker 盒子
- 在 boot2docker 虚拟机中运行的几个 docker 容器
- 运行多个 shell 脚本的 Vagrantfile
- 在这些 shell 脚本中,我运行从 boot2docker 虚拟机调用到它的子 Docker 容器的命令。这些命令的示例如下所示:
docker exec -i $(docker-compose ps -q $DOCKER_DBSVC) /bin/bash /db/dockersetup/restoreMyDB.sh
- 在我的 Linux Mint 盒子(和一个 Ubuntu 盒子)上运行
vagrant up
会产生可以正确执行所有命令的工作机器 - 在 Windows 上运行
vagrant up
上述命令(和类似命令)失败,并带有No such service: my-db-service
- 我
docker-compose config --services
在升级容器后运行并且可以验证服务名称是否存在,但无论出于何种原因,该命令仅在 Windows 主机上失败! - 脚本失败后,机器仍会启动并且 Docker 容器仍处于活动状态。然后我可以
vagrant ssh
进入盒子(通过 Windows 主机),并通过服务名称引用容器!
有什么建议么?