![](/img/trans.png)
[英]How to use `docker volume prune`? (`docker volume prune` removing all volumes even when container is running)
[英]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.