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