【发布时间】:2016-02-08 02:31:38
【问题描述】:
我在 Macbook Pro 笔记本电脑上运行 docker-machine (0.5.0) 和 docker-compose (1.5.0) 以启动我的容器。
这意味着我正在使用 docker-machine 创建我的 virtualbox boot2docker 驱动的 HOST 机器,它将运行我的 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 文件系统?将我的虚拟机上的路径挂载到容器?
在 web 下我声明:
volumes:
- ./src:/var/www/html
这是将我的 macbook pro 上的本地 macbook 文件系统 ./src 文件夹映射到我的 Web 容器。如果我的理解是正确的,它不应该将我的 VM 上的 ./src 文件夹映射到 /var/www/html 内网络容器?!从理论上讲,我认为我应该首先将我的本地 mac 文件系统文件夹 ./src 复制到我的 VM,然后我进行此卷声明。似乎 docker-compose 神奇地一次完成了这一切? 困惑
最后,我们可以看到我正在创建一个纯数据容器来保存我的 mysql 数据。我已经声明:
volumes:
- /var/lib/mysql
这不应该在我的 HOST boot2docker VM 上创建一个 /var/lib/mysql 文件夹,然后我可以导航到 VM 上的这个文件夹,是/否?当我使用 docker-machine ssh 进入我的机器,然后导航到 /var/lib 时,根本没有 NO mysql 文件夹?!为什么它没有被创建?我的配置有问题吗? :/
提前致谢!任何关于我在这里做错的解释将不胜感激!
【问题讨论】:
-
stackoverflow.com/questions/23439126/… 回答你的问题了吗?
标签: mysql docker docker-compose docker-machine volumes