![](/img/trans.png)
[英]How to install Alpine Linux packages in the gliderlabs/alpine Docker image, when apk add fails?
[英]Docker: Alpine Linux: why is apk add <package> persistent in a container?
晚上好。
我们已经了解到Docker容器是无状态的,但它看起来像一个Alpine Linux容器违反了这个规则:
docker run <containername> -it /bin/sh
启动Alpine Linux容器 apk add nano
如果我们现在停止并启动此容器,它仍然知道nano编辑器。
这是Alpine Linux中的一个特殊功能还是听起来我们的Docker主机做了一些奇怪的事情?
非常感谢任何光明和帮助! 亲切的问候,
托马斯。
看起来这里对这个概念有一个根本的误解:Docker容器本身并不是无状态的。 如果对容器文件系统进行任何更改,则只要容器存在,它就会保留。 只有当容器被销毁(删除)时,文件系统的可写层才会被删除,该层包含自容器创建以来所做的所有更改。
当我们说“Docker容器是无状态的”时,我们不是指它们根据定义是无状态的事实,而是关于如何使用容器的最佳实践和指南。 无状态是使用容器的模式 ,允许将它们视为一次性实体,例如:
也就是说,您必须了解Docker不会强制执行无状态 - 您 ,容器的创建者和用户必须关心它。 您必须将所有持久性应用程序数据存储在外部存储器上,从外部安装到容器中,或者存储在网络存储器中,例如存储在数据库中。
所以,回答最初的问题 - 阿尔卑斯山没什么特别的。 您将文件添加到容器中 - 您将它们放在容器中,直到容器被销毁。 这适用于任何容器,不仅适用于从Alpine图像创建的容器。
当你停止它时,容器仍然存在。 只有当您删除容器( docker container rm <id>
)并通过docker container run
再次启动它时,它才会成为指定映像之外的新容器。 如果你停止然后重新运行它 - 它仍然是同一个。
(它只会在宽限期后被杀死)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.