![](/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.