首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker -数据卷和数据容器之间的区别

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

Stack Overflow用户
提问于 2017-01-26 22:35:12
回答 2查看 2.3K关注 0票数 1

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

whit数据容器

代码语言:javascript
运行
复制
datacontainer:
 image: httpd:2.4-alpine
 volumes:
  - ../src:/usr/local/apache2/htdocs

apache:
 image: httpd:2.4-alpine
 ports:
  - 80:80
 volumes_from:
  - datacontainer

没有数据容器

代码语言:javascript
运行
复制
apache:
 image: httpd:2.4-alpine
 ports:
  - 80:80
 volumes:
  - ../src:/usr/local/apache2/htdocs

使用数据容器的优点和缺点是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-26 23:27:34

这两个示例都不是真正的数据卷或数据容器。它们都是绑定到主机的装载,一个比另一个更间接。我倾向于将这些称为主机卷。

对于命名卷,数据容器已弃用。它们看起来像:

代码语言:javascript
运行
复制
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中定义的卷来实现。但最大的问题是,您将数据作为容器进行管理,因此任何容器清理例程都将同样清理您的数据,如果您反对数据丢失或容器蔓延,这并不是很好。

命名卷要简单得多,并且具有数据容器的所有相同功能,但将数据管理与容器管理分开,允许容器无忧无虑地被清除,并从一个位置备份数据。它们看起来像:

代码语言:javascript
运行
复制
apache:
 image: httpd:2.4-alpine
 ports:
  - 80:80
 volumes:
  - data:/data

请注意,在compose的版本2中,您需要更具体地定义卷。

票数 5
EN

Stack Overflow用户

发布于 2017-01-26 23:27:02

数据容器模式是围绕数据持久性设计的,尽管它在Docker 1.9中主要被命名卷所取代。卷和数据容器模式的主要优点是,主机上的绑定挂载依赖于主机,这意味着您不能在docker文件中使用它。卷允许您在构建映像时灵活地定义卷。

此外,数据卷旨在持久化数据,独立于容器的生命周期。因此,当您移除容器时,Docker永远不会自动删除卷,也不会“垃圾收集”容器不再引用的卷。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41875846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档