摘要:要了解,首先我們需要理解文件系統的工作原理。在中,只讀層及在頂部的讀寫層的組合被稱為聯合文件系統,簡稱,它用到了一個重要的資源管理技術叫寫時復制。我們下面看一個實際例子。的作用是指定容器的主機名。
要了解Docker Volume,首先我們需要理解Docker文件系統的工作原理。Docker鏡像是由多個文件系統的只讀層疊加而成。當一個容器通過命令docker run啟動時,Docker會加載只讀鏡像層并在鏡像棧頂部添加一個讀寫層。如果運行中的容器修改了現有的一個已經存在的文件,那該文件將會從讀寫層下面的只讀層復制到讀寫層,但是該文件的只讀版本依然存在,只不過已經被讀寫層中該文件的副本所隱藏。
當刪除Docker容器,并通過該鏡像重新啟動時,之前在讀寫層的更改將會丟失。在Docker中,只讀層及在頂部的讀寫層的組合被稱為Union File System(聯合文件系統),簡稱UnionFS,它用到了一個重要的資源管理技術,叫寫時復制。寫時復制(copy-on-write),也叫隱式共享,是一種對可修改資源實現高效復制的資源管理技術。對于一個重復資源,若不修改,則無需立刻創建一個新的資源,該資源可以被共享使用。當發生修改的時候,才會創建新資源。這會大大減少對于未修改資源復制的消耗。其實COW這個概念對編程人員來說一點也不陌生,廣泛用在各種領域,比如ABAP里對于內表(Internal table)的拷貝動作,Java字符串的拷貝實現等等。Docker基于UnionFS去創建containers。
我們下面看一個實際例子。
使用命令行docker run --help查看這個命令的幫助文檔。 -h 的作用是指定容器的主機名。
使用命令行創建一個新的容器:
docker run -it --name jerry-container-test -h CONTAINER -v /data busybox /bin/sh
名稱為jerry-container-test, 用-v創建了一個volume /data
創建完畢之后,在容器里執行cd /data進入這個目錄,這個時候還是空的。
docker ps查看容器狀態:
現在我想知道主機上為了實現這個volume,使用了哪個internal目錄。
用命令docker inspect jerry-container-test查看關鍵字"volumes":
得到了容器里/data在主機上實現的目錄:
/var/lib/docker/volumes/96aa969033ee7e6d7ff607a0a47de5a5866613a422518ed3f86fee6240bae8cc/_data
現在我在主機上使用touch命令在這個目錄下直接創建一個文件:
sudo touch /var/lib/docker/volumes/96aa969033ee7e6d7ff607a0a47de5a5866613a422518ed3f86fee6240bae8cc/_data/test.s
現在切換到容器里,用ls也能看到直接在主機上用touch命令在internal folder里創建的文件了。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27581.html
摘要:要了解,首先我們需要理解文件系統的工作原理。在中,只讀層及在頂部的讀寫層的組合被稱為聯合文件系統,簡稱,它用到了一個重要的資源管理技術叫寫時復制。我們下面看一個實際例子。的作用是指定容器的主機名。 要了解Docker Volume,首先我們需要理解Docker文件系統的工作原理。Docker鏡像是由多個文件系統的只讀層疊加而成。當一個容器通過命令docker run啟動時,Docker...
摘要:要了解,首先我們需要理解文件系統的工作原理。在中,只讀層及在頂部的讀寫層的組合被稱為聯合文件系統,簡稱,它用到了一個重要的資源管理技術叫寫時復制。我們下面看一個實際例子。的作用是指定容器的主機名。 要了解Docker Volume,首先我們需要理解Docker文件系統的工作原理。Docker鏡像是由多個文件系統的只讀層疊加而成。當一個容器通過命令docker run啟動時,Docker...
本文摘自: docker 高級進階前面幾篇詳細的介紹了,docker的一些基本內容和知識. 這里, 我們來實踐一下,在正式環境中,docker是怎么搭建的.在開始之前,說一些docker運行時的基本原理.docker最大的特點就是虛擬化, 通過VM來獲得底層的操作權限,并且利用自身的進程構建了一個龐大的集群系統, 相當于,一個docker下面,我們可以連接上不同的電腦. 但實際上, 他們都可以虛擬...
摘要:后面會涉及以配置文件進行部署。的調度完成,被分配到指定上。這是的一種最終狀態。圖相較而言,除了提供的基本功能,還支持聲明式的更新和回滾。共享數據存儲的問題主要分為數據臨時存儲與持久性存儲。 帶著問題學 Kubernetes 基本單元 Pod 摘要:本文屬于原創,歡迎轉載,轉載請保留出處:https://github.com/jasonGeng88/blog 文章一:帶著問題學 Kube...
摘要:后面會涉及以配置文件進行部署。的調度完成,被分配到指定上。這是的一種最終狀態。圖相較而言,除了提供的基本功能,還支持聲明式的更新和回滾。共享數據存儲的問題主要分為數據臨時存儲與持久性存儲。 帶著問題學 Kubernetes 基本單元 Pod 摘要:本文屬于原創,歡迎轉載,轉載請保留出處:https://github.com/jasonGeng88/blog 文章一:帶著問題學 Kube...
閱讀 1376·2021-10-14 09:43
閱讀 4209·2021-09-27 13:57
閱讀 4552·2021-09-22 15:54
閱讀 2549·2021-09-22 10:54
閱讀 2350·2021-09-22 10:02
閱讀 2108·2021-08-27 13:11
閱讀 867·2019-08-29 18:44
閱讀 1639·2019-08-29 15:20