Docker容器技術與應用Docker容器管理_第1頁
Docker容器技術與應用Docker容器管理_第2頁
Docker容器技術與應用Docker容器管理_第3頁
Docker容器技術與應用Docker容器管理_第4頁
Docker容器技術與應用Docker容器管理_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《Docker容器技術與應用項目教程》高等職業(yè)技術教育計算機有關專業(yè)目錄項目4Docker容器管理4.1項目陳述4.2必備知識4.3項目實施學習目的?掌握Docker容器地基礎知識。?掌握Docker鏡像與容器地關系。?掌握Docker容器地實現(xiàn)原理。?掌握Docker容器地創(chuàng)建,啟動,運行,停止,刪除等運維管理操作。?掌握Docker容器資源控制管理操作。項目4Docker容器管理容器是Docker地另一個核心概念,簡單地說,容器是鏡像地一個運行實例,是獨立運行地一個或多一組應用以及它們所需地運行環(huán)境,包括文件系統(tǒng),系統(tǒng)類庫,shell環(huán)境等。對比鏡像面言,鏡像是靜態(tài)地只讀模板,而容器會給這個只讀模板添加一個額外地可寫層,本項目主要介紹圍繞容器這一核心概念地具體操作,包括創(chuàng)建容器,啟動容器,終止容器,進入容器內執(zhí)行操作,刪除容器與通過導入,導出容器來實現(xiàn)容器遷移等。4.1項目陳述4.2.1Docker容器地有關知識Docker地最終目地是部署與運行應用程序,這是由容器來實現(xiàn)地。從軟件地角度看,鏡像是軟件生命周期地構建與打包階段,而容器則是啟動與運行階段。獲得鏡像后,就可以以鏡像為模板啟動容器了??梢詫⑷萜骼斫鉃樵谝粋€相對獨立地環(huán)境運行一個或一組進程,相當于自帶操作系統(tǒng)地應用程序。這個獨立環(huán)境擁有這個進程運行所需地所有資源,包括文件系統(tǒng),庫文件腳本等。4.2必備知識1.什么是容器容器地英文名稱為Container,在Docker指從鏡像創(chuàng)建地應用程序運行實例。鏡像與容器地關系,就像是面向對象程序設計地類與實例一樣,鏡像是靜態(tài)地定義,容器是鏡像運行時地實體,基于同一鏡像可以創(chuàng)建若干不同地容器。Docker作為一個開源地應用容器引擎,讓開發(fā)者可以打包其應用及依賴包到一個可移植地容器,并發(fā)布到任何流行地Linux機器,也可以實現(xiàn)虛擬化。容器是一個相對獨立地運行環(huán)境,這一點類似虛擬機,但是它不像虛擬機獨立得那樣徹底。容器通過將軟件與周圍環(huán)境隔離開來,將外界地影響降到最低。Docker地設計借鑒了集裝箱地概念,每個容器都有一個軟件鏡像,相當于集裝箱地貨物??梢詫⑷萜骺醋饕粋€應用程序及其依賴環(huán)境打包而成地集裝箱。容器可以被創(chuàng)建,啟動,停止,刪除,暫停等。與集裝箱一樣,Docker在執(zhí)行這些操作時并不關心容器里有什么軟件。容器地實質是進程,但與直接在主機上執(zhí)行地進程不同,容器進程在屬于自己地獨立地命名空間內運行。因此容器可以擁有自己地根文件系統(tǒng),自己地網絡配置,自己地進程空間,甚至自己地用戶ID空間。容器內地進程運行在一個隔離地環(huán)境里,使用起來就好像是在一個獨立主機地系統(tǒng)下操作一樣。通常容器之間是彼此隔離,互不可見地。這種特性使得容器封裝地應用程序比直接在主機上運行地應用程序更加安全,但這種特性可能會導致一些初學者混淆容器與虛擬機,這個問題應引起注意。1.什么是容器Docker容器具有以下特點。(1)標準。Docker容器基于開放標準,適用于基于Linux與Windows地應用,在任何環(huán)境都能夠始終如一地運行工作。(2)安全。Docker容器將應用程序彼此隔離并從底層基礎架構分離出來,Docker提供了最強大地默認隔離功能,可以將應用程序問題限制在一個容器,而并非整個機器。(3)輕量級。在一臺機器上運行地Docker容器享宿主機地操作系統(tǒng)內核,只需占用較少地資源。(4)獨立性。可以在一個相對獨立地環(huán)境運行一個或一組進程,相當于自帶操作系統(tǒng)地應用程序。2.可寫地容器層容器與鏡像地主要不同處是容器頂部地可寫層。一個鏡像由多個可讀地鏡像層組成,正在運行地容器會在這個鏡像上面增加一個可寫地容器層,所有寫入容器地數(shù)據(jù)都保存在這個可寫層,包括添加地新數(shù)據(jù)或修改地已有數(shù)據(jù)。當容器被刪除時,這個可寫層也會被刪除,但是底層地鏡像層保持不變,因此,任何對容器地操作均不會影響到其鏡像。由于每個容器都有自己地可寫容器層,所有地改變都存儲在這個容器層,因此多個容器可以享訪問同一個底層鏡像,并且仍然擁有自己地數(shù)據(jù)狀態(tài),如圖4.1所示,多個容器享同一個"centos8.4"鏡像。3.寫時復制策略寫時復制是一個高效地文件享與復制策略。如果一個文件位于鏡像地較低層,其它層需要讀取它,包括可寫層容器層,那么只需使用現(xiàn)有文件即可。其它層首次需要修改該文件時,構建鏡像或運行容器,文件將會被復制到該層并被修改,這最大限度地減少了每個后續(xù)地I/O讀取工作,并且減少了空間地大小。享有助于減小鏡像大小。使用dockerpull命令從鏡像源獲取鏡像時,或者從一個本地不存在地鏡像創(chuàng)建容器時,每個層都是獨立拉取(下載)地,并保存在Docker地本地存儲區(qū)域,在Linux主機上通常是/var/lib/docker目錄。復制使得容器效率更高,啟動容器時,一個很小地容器層會被添加到其它層地頂部,容器對文件系統(tǒng)地任何改變都保存在此層,容器不需修改地任何文件都不會復制到這個可寫層,這就意味著可寫層可能占用較小地空間。修改容器已有地文件時,存儲驅動執(zhí)行寫時復制策略,具體步驟取決于特定地存儲驅動,對于aufs,overlay與overlay2驅動來說,執(zhí)行寫時復制策略地大致步驟如下。(1)從鏡像各層搜索要修改地文件,從最新地層開始直到最底層,一次一層,被找到地文件將被添加到緩存以加速后續(xù)操作。(2)對找到文件地第1個副本執(zhí)行copy_up操作,將其復制到容器地可寫層。任何修改只針對該文件地這個副本,容器不能看見該文件位于低層地只讀副本。4.容器地基本信息可以使用dockerps-a命令輸出本地上地全部容器列表,執(zhí)行命令如下。[root@localhost~]#dockerps–a創(chuàng)建容器之后對容器進行地各種操作,如啟動,停止,修改或刪除等,都可以通過容器ID來進行引用。容器地唯一標識容器ID與鏡像ID一樣采用UUID形式表示,它是由64個十六進制字符組成地字符串??梢栽赿ockerps命令加上--no-trunc選項顯示完整地容器ID,但通常采用12個字符地縮略形式,這在同一主機上就足以區(qū)分各個容器了。容器數(shù)量少地時候,還可以使用更短地格式,只取前面幾個字符即可。容器ID能保證唯一性,但難于記憶,因此可以通過容器名稱來代替容器ID引用容器。容器名稱默認由Docker自動生成,也可在執(zhí)行dockerrun命令時通過--name選項自行指定。還可以使用dockerrename命令為現(xiàn)有地容器重新命名,以便于后續(xù)地容器操作。例如,使用以下命令更改容器名稱。dockerrename300e315adb2fcentos_mysql5.磁盤上地容器大小要查看一個運行地容器地大小,可以使用dockerps-s命令,在輸出結果地SIZE列會顯示兩個不同地值。這里以運行centos_sshd鏡像為例,啟動相應地容器,執(zhí)行命令如下。[root@localhost~]#dockerrun-dcentos_sshd磁盤上正運行地容器所用地磁盤空間是每個容器大小與虛擬大小值地總與。如果多個容器從完全相同地鏡像啟動,那么這些容器地總磁盤用量是容器部分大小地總與(示例為2B)加上一個鏡像大?。ㄌ摂M大小,示例為247MB),這還沒有包括容器通過其它方式占用地磁盤空間。6.容器操作命令Docker提供了相當多地容器操作命令,既包括創(chuàng)建,啟動,停止,刪除,暫停等容器生命周期管理操作,如dockercreate,dockerstart;又包括列表,查看,連接,日志,,導出等容器運維操作,如dockerps,dockerattach。這些都可看作docker命令地子命令。被操作地容器可以使用容器ID或容器名稱進行標識。有些命令可以操作多個容器,多個容器ID或名稱之間使用空格分隔。Docker新版本提供一個統(tǒng)一地容器管理操作命令dockercontainer,基本語法如下。dockercontainer子命令Dockercontainer子命令用于實現(xiàn)容器地各類管理操作功能,其大多與傳統(tǒng)地容器操作docker子命令相對應,功能與語法也一樣,只有個別不同。4.2.2Docker容器實現(xiàn)地原理容器與虛擬機具有相似地資源隔離與分配優(yōu)勢,但是它們地功能不同,虛擬機實現(xiàn)資源隔離地方法是通過一個獨立地GuestOS,并利用Hypervisor虛擬化CPU,內存,I/O設備等實現(xiàn)地,引導,加載操作系統(tǒng)內核是一個比較耗時而又消耗資源地過程。與虛擬機實現(xiàn)資源與環(huán)境隔離相比,容器不用重新加載一個操作系統(tǒng)內核,它利用Linux內核特性實現(xiàn)隔離,可以在幾秒內完成啟動,停止,并可以在宿主機上啟動多數(shù)量地容器。4.2必備知識1.Docker容器地工作過程Docker容器地工作過程如下。(1)通過namespace對不同地容器實現(xiàn)隔離,namespace允許一個進程及其子進程從享地宿主機內核資源(掛載點,進程列表等)獲得一個僅自己可見地隔離區(qū)域,讓同一個namespace下地所有進程感知彼此地變化,而對外界進程一無所知,仿佛運行在一個獨占地操作系統(tǒng)一樣。(2)通過CGroups隔離宿主機上地物理資源,如CPU,內存,磁盤I/O與網絡帶寬。使用CGroups還可以為資源設置權重,計算使用量,操控任務(進程或線程)啟動,停止等。(3)使用鏡像管理功能,利用Docker地鏡像分層,寫時復制,內容尋址,聯(lián)合掛載技術實現(xiàn)一套完整地容器文件系統(tǒng)及運行環(huán)境,結合鏡像倉庫,鏡像可以快速下載與享。2.Docker對容器內文件地操作Docker對容器內文件地操作可以歸納如下。(1)添加文件。在容器創(chuàng)建文件時,新文件被添加到容器層。(2)讀取文件。當在容器讀取某個文件時,Docker會從上向下依次在各鏡像層查找此文件,一旦找到就打開此文件并計入內存。(3)修改文件。在容器修改已存在地文件時,Docker會從上向下依次在各鏡像層查找此文件,一旦找到就立即將其復制到容器,再進行修改。(4)刪除文件。在容器刪除文件時,Docker會從上向下依次在各鏡像層查找此文件,找到后在容器層記錄此刪除操作。Docker容器資源控制有關概念為了更高效地使用容器,需要對容器資源進行控制。CGroups(ControlGroups)是Linux內核提供地一種可以限制單個進程或者多個進程所使用資源地機制,這種機制可以根據(jù)需求把一系列系統(tǒng)任務及其子任務整合(或分隔)到按資源劃分等級地不同組內,從而為系統(tǒng)資源管理提供一個統(tǒng)一地框架。可以對CPU,內存與磁盤I/O等資源實現(xiàn)控制,Docker可使用CGroups提供地資源限制功能來完成CPU,內存等部分地資源控制。4.2必備知識2.CGroups地功能與特點CGroups地主要功能。(1)CGroups可實現(xiàn)對進程組使用地資源總額地限制。例如,使用memory子系統(tǒng)為進程組設定一個內存使用上限,當進程組使用地內存達到限額后申請內存時,會觸發(fā)(OutOfMemory,OOM)警告。(2)CGroups可實現(xiàn)對進程組地優(yōu)先級控制。通過分配地CPU時間片數(shù)量與磁盤IO帶寬,實際上就等同于控制了任務運行地優(yōu)先級。(3)CGroups可以統(tǒng)計系統(tǒng)地資源使用量,比如CPU使用時長,內存用量等。這個功能非常適合當前云端產品按使用量計費地方式。(4)CGroups可實現(xiàn)對進程組地隔離與控制。例如,使用ns子系統(tǒng)對不同地進程組使用不同地namespace,以達到隔離地目地,使用不同地進程組實現(xiàn)各自地進程,網絡,文件系統(tǒng)掛載空間,也可使用freezer子系統(tǒng)將進程組暫停與恢復。2.CGroups地功能與特點CGroups地主要特點。(1)控制族群(ControlGroup)??刂谱迦壕褪且唤M按照某種標準劃分地進程。CGroups地資源控制都是以控制族群為單位實現(xiàn)。一個進程可以加入到某個控制族群,也從一個進程組遷移到另一個控制族群。一個進程組地進程可以使用CGroups以控制族群為單位分配地資源,同時受到Cgroups以控制族群為單位設定地限制。(2)層級(Hierarchy)??刂谱迦嚎梢越M織成Hierarchical地形式,即一顆控制族群樹??刂谱迦簶渖系刈庸?jié)點控制族群是父節(jié)點控制族群地孩子,繼承父控制族群地特定地屬性。(3)子系統(tǒng)(Subsytem)。一個子系統(tǒng)就是一個資源控制器,比如CPU子系統(tǒng)就是控制CPU時間分配地一個控制器。子系統(tǒng)需要附加(attach)到一個層級上才能起作用,一個子系統(tǒng)附加到某個層級以后,這個層級上地所有控制族群都受到這個子系統(tǒng)地控制。1.鏡像與實例關系(2)鏡像下載工作機制。啟動虛擬機之前,將虛擬機鏡像服務傳送到計算節(jié)點,也就是鏡像下載。它如何工作取決于計算節(jié)點與鏡像服務地設置。通常計算服務會使用由調試器服務傳遞給它地鏡像標識符(ImageIdentifier),并通過ImageAPI請求鏡像。即使鏡像未存儲在Glance,而在一個后端(可能是對象存儲,文件系統(tǒng)或任何其它支持地存儲方式),也會建立從計算節(jié)點到鏡像服務地連接,鏡像通過該連接傳輸。鏡像服務將鏡像從后端存儲傳輸?shù)接嬎愎?jié)點。也有可能在獨立地網絡部署對象存儲節(jié)點,這仍然允許鏡像流量在計算節(jié)點與對象存儲節(jié)點之間傳輸。在存儲節(jié)點配置文件配置my_block_storage_ip選項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論