我在Macbook Pro笔记本电脑上运行docker-machine(0.5.0)和docker-compose(1.5.0)来让我的容器运行.
这意味着我正在使用docker-machine来创建我的虚拟机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"
Run Code Online (Sandbox Code Playgroud)
Docker撰写卷的文件文档在这里:http://docs.docker.com/compose/compose-file/
它表示卷 - 将路径挂载为卷,可选择指定主机上的路径(HOST:CONTAINER),或访问模式(HOST:CONTAINER:ro).
在这种情况下主机是指我的由docker-machine创建的VM,对吗?还是我的本地macbook文件系统?将VM上的路径挂载到容器?
在网上我声明:
volumes:
- ./src:/var/www/html
Run Code Online (Sandbox Code Playgroud)
这是将我的macbook pro上的本地macbook文件系统./src文件夹映射到我的Web容器.如果我的理解是正确的,不应该将我的VM上的./src文件夹映射到Web容器中的/ var/www/html吗?!从理论上讲,我认为我应该首先将我的本地mac文件系统文件夹./src复制到我的VM,然后我做这个卷声明.似乎docker-compose一下子神奇地做了所有这一切?困惑
最后,我们可以看到我正在创建一个仅限数据的容器来保存我的mysql数据.我宣布:
volumes:
- /var/lib/mysql …Run Code Online (Sandbox Code Playgroud)