gpt4 book ai didi

Docker:Alpine Linux:为什么 apk add 在容器中持久化?

转载 作者:行者123 更新时间:2023-12-01 23:09:32 25 4
gpt4 key购买 nike

晚上好。

我们了解到 Docker 容器是无状态的,但看起来 Alpine Linux 容器违反了这条规则:

  1. 我们使用 docker run <containername> -it /bin/sh 启动一个 Alpine Linux 容器
  2. 我们安装缺少的 nano 编辑器:apk add nano

如果我们现在停止并启动这个容器,它仍然知道 nano 编辑器。

这是 Alpine Linux 中的一个特殊功能,还是听起来我们的 Docker 主机做了一些奇怪的事情?

非常感谢您的帮助和帮助!亲切的问候,
托马斯。

最佳答案

似乎对这里的概念存在根本性的误解:Docker 容器本身并不是无状态的。如果您对容器文件系统进行任何更改,只要容器存在,它就会一直存在。只有当容器被销毁(删除)时,文件系统的可写层(包含自容器创建以来所做的所有更改)才会被删除。

当我们说“Docker 容器是无状态的”时,我们并不是指根据定义它们是无状态的这一事实,而是指关于如何使用容器的最佳实践和指南。无状态是使用容器的一种模式,它允许将它们视为一次性实体,例如:

  • 如果您因为应用程序崩溃或系统/硬件故障而丢失了一个无状态容器,您不必担心这一点,只需创建一个新容器,它会继续像其前身一样工作。
  • 如果您想将一些容器化应用程序从一台非常繁忙的服务器卸载到另一台未充分利用的服务器(例如,您刚刚购买并安装了新硬件),您可以终止原始服务器上的容器并在新服务器上重新创建它。<

也就是说,您必须了解 Docker 不会强制无状态 - ,容器的创建者和用户,必须关心它。您必须将所有持久应用程序数据存储在外部存储上,从外部安装到容器中,或网络存储中,例如在数据库中。

所以,回答最初的问题 - Alpine 没有什么特别之处。您将文件添加到容器中 - 在容器被销毁之前,您将它们保存在那里。这适用于任何容器,不仅适用于从 Alpine 镜像创建的容器。

关于Docker:Alpine Linux:为什么 apk add <package> 在容器中持久化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318817/

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