我使用Macbook Pro笔记本电脑,并安装了docker-machine(0.5.0)和docker-compose(1.5.0)来启动容器。
这意味着我正在使用docker-machine创建我的虚拟机boot2docker驱动的主机,它将运行我的docker守护进程并托管所有我的容器。
我认为我在主机和卷的概念上缺少了一些关键信息,因为它们涉及到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上的路径挂载到容器中?
在web下我声明:
volumes:
- ./src:/var/www/html
这将我的本地Macbook文件系统 /src 文件夹映射到Web容器中。如果我理解正确,它不应该将VM上的./src文件夹映射到Web容器中的/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 时,根本没有 mysql 文件夹!为什么它没有被创建呢?我的配置有问题吗?:/先行致谢!非常感谢任何关于我在这里做错了什么的解释!