我不明白数据量和数据容器之间有什么区别...... 例如,这两个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
使用数据容器有哪些优点和缺点?
答案 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永远不会自动删除卷,也不会“垃圾收集”容器不再引用的卷。