Docker - 数据卷和数据容器之间的差异

时间:2017-01-26 14:35:12

标签: docker docker-volume

我不明白数据量和数据容器之间有什么区别...... 例如,这两个docker-compose配置具有相同的结果,但第一个使用数据容器

whit数据容器

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

使用数据容器有哪些优点和缺点?

2 个答案:

答案 0 :(得分:4)

这些示例中的任何一个都不是数据卷或数据容器。它们都是绑定到主机的挂载,一个是间接绑定到另一个。我倾向于将那些称为主机卷。

不推荐使用数据容器到指定的卷。他们看起来像:

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,仍然可以获得数据。这有多个缺点,如果使用图像I posted a blog about just how much I dislike that中定义的卷实现。但最大的问题是您将数据作为容器进行管理,因此任何容器清理例程都会同样清理您的数据,如果您反对数据丢失或容器蔓延,则不是很好。

命名卷更容易,并且具有数据容器的所有相同功能,但将数据管理与容器管理分开,允许容易清除容器,并从一个地方备份数据。他们看起来像:

apache:
 image: httpd:2.4-alpine
 ports:
  - 80:80
 volumes:
  - data:/data

请注意,在compose的第2版中,您对卷定义更具体。

答案 1 :(得分:0)

数据容器模式是围绕数据持久性设计的,尽管它主要在Docker 1.9中被命名卷废弃。卷和数据容器模式的主要优点是主机上的绑定安装依赖于主机,这意味着您无法在docker文件中使用它。卷可以让您在构建映像时灵活地定义卷。

此外,数据卷旨在保留数据,与容器的生命周期无关。因此,当您删除容器时,Docker永远不会自动删除卷,也不会“垃圾收集”容器不再引用的卷。