繁体   English   中英

Docker-数据量和数据容器之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM