【发布时间】:2016-11-01 14:37:27
【问题描述】:
我试图理解 - 也许我已经理解了,也许没有 - volumes_from 和 volumes 在 docker-compose.yml 文件中的用法之间的区别。我已经阅读了文档,但从那里我不太清楚,所以我正在做一个真正的练习。
我有以下设置:
- 一个根目录
- 一个名为
php-apache的目录,根目录下有一个Dockerfile - 一个名为
mongo的目录,根目录下有一个Dockerfile - 根目录下的
docker-compose.yml文件
注意:如果您不清楚,请查看here,下面暴露的所有内容也都在那里(
mongodb-test分支)
-
php-apache/Dockerfile我有以下条目:VOLUME /data /data -
mongo/Dockerfile我有以下条目:VOLUME /data/db /data/configdb -
docker-compose.yml我有以下信息:version: '2' services: php-apache: container_name: "php55-dev" image: reynierpm/php55-dev ports: - "80:80" environment: PHP_ERROR_REPORTING: 'E_ALL & ~E_DEPRECATED & ~E_NOTICE' volumes: - ~/mmi:/var/www volumes_from: - volumes_data mongo: container_name: "mongodb" image: reynierpm/mongodb ports: - "27017:27017" volumes_from: - volumes_data volumes_data: image: tianon/true volumes: - ~/data/mongo:/data/db - ~/data:/data
这是我从该设置中理解的:
- 图像
reynierpm/php55-dev将公开一个/data目录,这将映射到tianon/true图像中的~data:/data - 图像
reynierpm/mongodb将向外部公开/data/db并在内部映射到/data/configdb,然后/data/db映射到tianon/true图像中的~/data/mongo:/data/db。
现在我脑子里一团糟,因为我想要实现以下目标:
- 保持将主机上的代码映射到容器上(
docker-compose.yml上的这一行<path_on_host>:/var/www) - 将数据保存在主机的本地目录中
那么,我在做什么没问题?由于我仍在学习,请随意对此设置进行任何修改。
【问题讨论】:
标签: docker docker-compose dockerfile docker-volume