![](/img/trans.png)
[英]What Is The Difference Between Binding Mounts And Volumes While Handling Persistent Data In Docker Containers?
[英]Docker - difference between data volumes and data containers
我不明白数据量和数据容器之间有什么区别...例如,这两个docker-compose配置具有相同的结果,但第一个使用数据容器
数据容器
datacontainer:
image: httpd:2.4-alpine
volumes:
- ../src:/usr/local/apache2/htdocs
apache:
image: httpd:2.4-alpine
ports:
- 80:80
volumes_from:
- datacontainer
没有数据容器
apache:
image: httpd:2.4-alpine
ports:
- 80:80
volumes:
- ../src:/usr/local/apache2/htdocs
使用数据容器的优点和缺点是什么?
这些示例都不是真正的数据卷或数据容器。 它们都绑定到主机,比另一个间接得多。 我倾向于将这些称为主机卷。
数据容器已弃用到命名卷。 它们看起来像:
datacontainer:
image: httpd:2.4-alpine
command: tail -f /dev/null
volumes:
- /data
apache:
image: httpd:2.4-alpine
ports:
- 80:80
volumes_from:
- datacontainer
然后,您可以重新创建apache容器或对其进行升级,而无需升级datacontainer,仍然可以使用数据。 这样做有很多弊端,如果按照图片中定义的数量实施,我会在博客中发布有关我有多不满意的博客 。 但是最大的问题是,您将数据作为容器进行管理,因此任何容器清理例程都将同样地清理数据,如果您反对数据丢失或容器蔓延的话,效果会非常差。
命名卷要容易得多,并且具有数据容器的所有相同功能,但是将数据管理与容器管理分离开,从而无需担心即可清除容器,并可以从一个位置备份数据。 他们看着像是:
apache:
image: httpd:2.4-alpine
ports:
- 80:80
volumes:
- data:/data
请注意,在compose的第2版中,您将更详细地定义卷。
数据容器模式是围绕数据持久性设计的,尽管它在Docker 1.9中已被命名卷淘汰。 卷和数据容器模式的主要优点是,主机上的绑定安装取决于主机,这意味着您不能在docker文件中使用它。 卷使您可以灵活地在构建映像时定义卷。
此外,数据卷旨在持久存储数据,而与容器的生命周期无关。 因此,Docker永远不会在您删除容器时自动删除卷,也不会“垃圾收集”不再由容器引用的卷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.