gpt4 book ai didi

docker - `data-container` 带有命名或匿名卷 - 概念问题? (讨论)

转载 作者:行者123 更新时间:2023-12-02 20:50:26 25 4
gpt4 key购买 nike

a) 匿名卷

使用数据容器时,您可以像这样使用匿名卷

version '2'
services:
consumer:
volume_from:
- data-container:rw
data-container:
image: cogniteev/echo
command: echo 'Data Container'
volume:
- /var/www

b) 命名卷

或者您可以使用这样的命名卷
version '2'
services:
consumer:
volume_from:
- data-container:rw
data-container:
image: cogniteev/echo
command: echo 'Data Container'
volume:
- my-named-volume:/var/www

volumes:
my-named-volume:
driver: local

我通常选择 b) 并想讨论/解释这两者的概念问题/缺陷。那么有什么好处和坏处。

我们可以比较它们的方面是/可能是:
  • 便携性
  • 数据容器的可升级性(我们为什么要升级容器?)
  • 启动/停止(继续)兼容性?
  • 多栈问题?
  • 效率(卷的重用)

  • 这个问题源于对这个问题的讨论 https://stackoverflow.com/a/38984689/3625317

    最佳答案

    简短的回答:命名数据卷是首选,不再需要数据容器,所以你不应该使用 volumes-from在任何新项目上。

    您的命名卷版本正在合并命名和数据容器,它应该是:

    version '2'
    services:
    web:
    image: my-web-image
    volumes:
    - my-named-volume:/var/www

    volumes:
    my-named-volume:
    driver: local

    通过合并两者,您添加了一个额外的间接层来访问您的命名卷,而没有任何额外的好处。命名卷是在 1.9 到 replace data containers 中创建的这本身就是一种提供持久数据的有点被破解的方法。命名卷相对于数据容器的优势包括:
  • 您的数据管理与容器管理是分开的,您可以删除所有正在运行的容器,而您的数据仍然可用
  • 数据可以使用卷驱动程序存储在不同的位置,这意味着您可以将其放在 nfs、分布式文件系统,甚至是本地持久目录
  • 您可以按任何顺序启动和停止任何容器,而容器之间没有依赖关系
  • 首次创建时,命名卷将接收它首先安装在其上的镜像文件系统的副本,这与数据容器的行为相同,这意味着它是无缝转换(请注意,这不是主机卷的行为,又名绑定(bind)安装)

  • 另见 this question that also discusses named volumes vs data containersthis answer另一个类似的问题。我们还有一个 blog post on this由我工作的公司。

    关于docker - `data-container` 带有命名或匿名卷 - 概念问题? (讨论),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013222/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com