我在 Macbook Pro 笔记本电脑上运行docker-machine (0.5.0)和docker-compose (1.5.0)来启动我的容器。
这意味着我正在使用 docker-machine 创建我的 virtualbox boot2docker 驱动的主机,它将运行我的 docker 守护进程并托管我的所有容器。
我认为我在 HOSTS 和 VOLUME 的概念上遗漏了一些关键的东西,因为它们指的是 Docker 和文档。
这是我的 docker-compose.yml 文件(web 只是构建 php:5.6-apache 图像):
web:
restart: "always"
build: ./docker-containers/web
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
links:
- mysql:mysql
mysql:
restart: "always"
image: mysql:5.7
volumes_from:
- data
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=XXX
data:
restart: "no"
image: mysql:5.7
volumes:
- /var/lib/mysql
command: "true"
Docker Compose 卷的文件文档在这里:http ://docs.docker.com/compose/compose-file/
它规定了卷 -将路径安装为卷,可选择指定主机上的路径 (HOST:CONTAINER) 或访问模式 (HOST:CONTAINER:ro)。
在这种情况下,HOST 是指由 docker-machine 创建的我的 VM,对吗?还是我本地的 macbook 文件系统?将我的 VM 上的路径挂载到容器?
在网络下我声明:
volumes:
- ./src:/var/www/html
这是将我的 macbook pro 上的本地 macbook 文件系统./src文件夹映射到我的 Web 容器。如果我的理解是正确的,它不应该将我的虚拟机上的./src文件夹映射到Web 容器中的/var/www/html吗?!从理论上讲,我认为我应该首先将我的本地 mac 文件系统文件夹./src 复制到我的虚拟机,然后我执行此卷声明。似乎 docker-compose 神奇地一次完成了这一切?使困惑
最后,我们可以看到我正在创建一个仅数据容器来保存我的 mysql 数据。我已经宣布:
volumes:
- /var/lib/mysql
这不应该在我的 HOST boot2docker VM 上创建一个/var/lib/mysql文件夹,然后我可以导航到 VM 上的这个文件夹,是/否?当我使用 docker-machine ssh 进入我的机器,然后导航到/var/lib时,根本没有mysql 文件夹?!为什么它没有被创建?我的配置有问题吗?:/
提前致谢!任何关于我在这里做错的解释将不胜感激!