簡體   English   中英

Docker容器卷如何運行,即使它們沒有運行?

[英]How Docker container volumes work even when they aren't running?

僅采用典型數據Docker容器:

FROM stackbrew/busybox:latest

RUN mkdir /data
VOLUME /data

現在我看到很多像這樣運行的:

docker run -name my-data data true

true命令在運行時立即退出,容器也會退出。 但令人驚訝的是,當您通過--volumes-from my-data將其與另一個容器連接時,它會繼續為該卷提供服務。

我的問題是,這是如何工作的? 停止的容器如何仍允許訪問其卷?

docker中的卷不是頂級的東西。 它們“簡單地”是容器元數據的一部分。

當您在dockerfile中使用VOLUME或使用-v啟動容器時,Docker將在/var/lib/docker/volumes *中使用隨機ID創建一個目錄(這與使用commit創建圖像的過程完全相同,除非它是空)並將該隨機ID添加到容器的元數據中。

當容器啟動時,Docker將在該/var/lib/docker/volumes/的給定位置掛載綁定目錄/var/lib/docker/volumes/ *。

當您使用volume volumes-from ,Docker將只查找其他容器中的卷id和位置,運行與否,並在目標位置掛載綁定目錄。

卷不與運行時鏈接,它只是掛載的目錄。

*對於較新的版本,Docker現在使用vfs驅動程序進行存儲,而/var/lib/docker/volumes/僅用於大小,創建時間等元數據。實際數據存儲在/var/lib/docker/vfs/dir/<volume id>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM