我不明白数据卷和数据容器之间有什么区别……例如,这两个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
使用数据容器的优点和缺点是什么?
发布于 2017-01-26 23:27:34
这两个示例都不是真正的数据卷或数据容器。它们都是绑定到主机的装载,一个比另一个更间接。我倾向于将这些称为主机卷。
对于命名卷,数据容器已弃用。它们看起来像:
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中,您需要更具体地定义卷。
发布于 2017-01-26 23:27:02
数据容器模式是围绕数据持久性设计的,尽管它在Docker 1.9中主要被命名卷所取代。卷和数据容器模式的主要优点是,主机上的绑定挂载依赖于主机,这意味着您不能在docker文件中使用它。卷允许您在构建映像时灵活地定义卷。
此外,数据卷旨在持久化数据,独立于容器的生命周期。因此,当您移除容器时,Docker永远不会自动删除卷,也不会“垃圾收集”容器不再引用的卷。
https://stackoverflow.com/questions/41875846
复制相似问题