日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 什么是 Docker、鏡像、編排?

什么是 Docker、鏡像、編排?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 09:35:29 1697160929

一、什么是 Docker、鏡像、編排

Docker是一種容器技術,允許開發人員將應用程序與相關的依賴關系打包在一起以形成可移植的鏡像,并通過容器來部署這些鏡像。

鏡像是一個只讀的模板,用于創建Docker 容器。鏡像是由操作系統、應用程序和其他相關依賴項打包而成,在Docker中使用多層文件系統來存儲,并且鏡像之間可以通過共享層文件來提高效率。Docker鏡像是由一系列的層組成的,每一層都是對上一層的增量修改。每一層都有一個少數的ID,可以通過加密哈希算法或者隨機數生成。docker鏡像的所有層都是只讀的,不能被修改,只能通過創建新的層來改變。Docker容器是基于Docker鏡像運行的實例,它在鏡像的最上面添加了一個可讀寫的容器層。容器層保存了容器運行時的所有數據變化,如新建文件,修改文件等。刪除容器后,容器層也會被刪除,而基礎鏡像則保持不變。Docker使用了棧式層管理和寫時復制的技術來實現鏡像和容器的存儲。棧式層管理是指每一層都是從下往上,以棧的方式組合在一起,組成鏡像或者容器的根文件系統。寫時復制是指當需要修改某一層的數據時,不直接修改原始數據,而是將修改后的數據保存在一個新的層中。這樣可以提高效率和安全性,也可以實現鏡像層之間的共享。

編排是 Docker 容器中的一個重要概念,它是一種將多個容器組織在一起以形成分布式應用程序的技術。在 Docker 中,編排描述了容器如何協同工作以支持應用程序。例如,可以通過 Docker Compose 工具來定義和運行多個容器,使它們能夠相互通信以實現應用程序的功能。Docker編排通常包括以下方面:

容器編排:為多個容器指定數量、配置和啟動順序,并保證它們之間的關系。網絡編排:將容器組建成一個網絡,并配置容器之間的通信策略。存儲編排:為容器配置卷(volume)或者本地主機的文件目錄,并關聯到不同的容器中。

二、Docker詳細介紹

1、簡介

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux或Windows操作系統的機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。一個完整的Docker有以下幾個部分組成:

DockerClient客戶端Docker Daemon守護進程Docker Image鏡像DockerContainer容器

2、起源

Docker 是?PaaS?提供商 dotCloud 開源的一個基于?LXC?的高級容器引擎,源代碼托管在?Github?上,基于go語言并遵從Apache2.0協議開源。

Docker自2013年以來非常火熱,無論是從 github 上的代碼活躍度,還是Redhat在RHEL6.5中集成對Docker的支持,就連?Google?的 Compute Engine 也支持 docker 在其之上運行。

一款開源軟件能否在商業上成功,很大程度上依賴三件事——成功的 user case(用例),活躍的社區和一個好故事。 dotCloud 之家的 PaaS 產品建立在docker之上,長期維護且有大量的用戶,社區也十分活躍,接下看看docker的故事。

環境管理復雜:從各種OS到各種中間件到各種app,一款產品能夠成功作為開發者需要關心的東西太多,且難于管理,這個問題幾乎在所有現代IT相關行業都需要面對。云計算時代的到來:AWS的成功,引導開發者將應用轉移到 cloud 上,解決了硬件管理的問題,然而中間件相關的問題依然存在(所以openstack HEAT和 AWS cloudformation 都著力解決這個問題)。開發者思路變化提供了可能性。虛擬化手段的變化:cloud 時代采用標配硬件來降低成本,采用虛擬化手段來滿足用戶按需使用的需求以及保證可用性和隔離性。然而無論是KVM還是Xen在 docker 看來,都在浪費資源,因為用戶需要的是高效運行環境而非OS,GuestOS既浪費資源又難于管理,更加輕量級的LXC更加靈活和快速。LXC的移動性:LXC在 linux 2.6 的 kernel 里就已經存在了,但是其設計之初并非為云計算考慮的,缺少標準化的描述手段和容器的可遷移性,決定其構建出的環境難于遷移和標準化管理(相對于KVM之類image和snapshot的概念)。docker 就在這個問題上做出實質性的革新。這是docker最獨特的地方。

面對上述幾個問題,docker設想是交付運行環境如同海運,OS如同一個貨輪,每一個在OS基礎上的軟件都如同一個集裝箱,用戶可以通過標準化手段自由組裝運行環境,同時集裝箱的內容可以由用戶自定義,也可以由專業人員制造。這樣,交付一個軟件,就是一系列標準化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,并且在最頂端署上自己的名字(最后一個標準化組件是用戶的app)。這也就是基于docker的PaaS產品的原型。

3、特性

在docker的網站上提到了docker的典型場景:

Automating the packaging and deployment of applications(使應用的打包與部署自動化)Creation of lightweight, private PAAS environments(創建輕量、私密的PAAS環境)Automated testing and continuous integration/deployment(實現自動化測試和持續的集成/部署)Deploying and scaling web apps, databases and backend services(部署與擴展webapp、數據庫和后臺服務)

由于其基于LXC的輕量級虛擬化的特點,docker相比KVM之類最明顯的特點就是啟動快,資源占用小。因此對于構建隔離的標準化的運行環境,輕量級的PaaS(如dokku),構建自動化測試和持續集成環境,以及一切可以橫向擴展的應用(尤其是需要快速啟停來應對峰谷的web應用)。

構建標準化的運行環境,現有的方案大多是在一個baseOS上運行一套puppet/chef,或者一個image文件,其缺點是前者需要base OS許多前提條件,后者幾乎不可以修改(因為copy on write 的文件格式在運行時rootfs是read only的)。并且后者文件體積大,環境管理和版本控制本身也是一個問題PaaS環境是不言而喻的,其設計之初和dotcloud的案例都是將其作為PaaS產品的環境基礎因為其標準化構建方法(buildfile)和良好的REST API,自動化測試和持續集成/部署能夠很好的集成進來因為LXC輕量級的特點,其啟動快,而且docker能夠只加載每個container變化的部分,這樣資源占用小,能夠在單機環境下與KVM之類的虛擬化方案相比能夠更加快速和占用更少資源

4、局限

Docker并不是全能的,設計之初也不是KVM之類虛擬化手段的替代品,簡單總結幾點:

Docker是基于Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用LXC是基于cgroup等linux kernel功能的,因此container的guest系統只能是linux base的隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運行庫網絡管理相對簡單,主要是基于namespace隔離cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按內存收費)Docker對disk的管理比較有限container隨著用戶進程的停止而銷毀,container中的log等用戶數據不便收集

5、原理

Docker核心解決的問題是利用LXC來實現類似VM的功能,從而利用更加節省的硬件資源提供給用戶更多的計算資源。同VM的方式不同,LXC?其并不是一套硬件虛擬化方法——無法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意一個,而是一個操作系統級虛擬化方法,理解起來可能并不像VM那樣直觀。所以可以從虛擬化到docker要解決的問題出發,看看docker是怎么滿足用戶虛擬化需求的。用戶需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的主要是以下4個問題:

隔離性:每個用戶實例之間相互隔離,互不影響。 硬件虛擬化方法給出的方法是VM,LXC給出的方法是container,更細一點是kernel namespace可配額/可度量:每個用戶實例可以按需提供其計算資源,所使用的資源可以被計量。硬件虛擬化方法因為虛擬了CPU,memory可以方便實現,LXC則主要是利用cgroups來控制資源移動性:用戶的實例可以很方便地復制、移動和重建。硬件虛擬化方法提供snapshot和image來實現,docker(主要)利用AUFS實現安全性:這個話題比較大,這里強調是host主機的角度盡量保護container。硬件虛擬化的方法因為虛擬化的水平比較高,用戶進程都是在KVM等虛擬機容器中翻譯運行的,然而對于LXC,用戶的進程是lxc-start進程的子進程,只是在Kernel的namespace中隔離的,因此需要一些kernel的patch來保證用戶的運行環境不會受到來自host主機的惡意入侵,dotcloud(主要是)利用kernel grsec patch解決的

延伸閱讀1:Docker安全中心

在新的功能中有硬件的部分,可以 跨任何基礎架構,允許開發和隨后的升級中的數字編碼簽名。構建在Docker Trust框架之上用來進行鏡像發布者認證,同時進行新的鏡像掃描和官方漏洞檢測,以便能夠更好地理解容器內部是什么。命名空間是本周發布的另外一個Docker安全升級。允許IT運用來為基于用戶群組的容器指派授權,約束了主機的訪問根源,并指定了系統管理員,限制了群組對于指定服務的訪問。鏡像掃描對于Docker Hub上的所有官方版本都可用,同時命名空間和硬件簽名則在Docker的實驗渠道提供。安全問題仍舊是容器采納要解決的最大問題,尤其是如果大量容器是便攜的,IDC研究經理Larry Carvalho說道。通過硬件解決這個問題很明智,因為這樣更難以介入,并且提供了未來可能被使用的大量容器的效率。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
Access數據庫怎樣免費下載?

一、Access數據庫免費下載的方法1、Microsoft官方網站訪問Microsoft官方網站,進入”Office”或”Access”的頁面。Microsoft通常提供試用版本或...詳情>>

2023-10-13 11:29:41
千萬級用戶的實時問答網站用什么語言,數據庫和服務器有什么要求?

一、千萬級用戶的實時問答網站用什么語言,數據庫和服務器有什么要求語言方面,可以選擇像 Java、Python、Go 等支持高并發的編程語言。其中,Ja...詳情>>

2023-10-13 11:20:16
Ecoinvent數據庫中,Cut-off、Conseq和APOS三種類型的數據使用區別在哪兒?

一、Ecoinvent數據庫中,Cut-off、Conseq和APOS三種類型的數據使用區別跟系統邊界/分配方法有關,之前看到過有人推薦使用cut-off就可以了。附以...詳情>>

2023-10-13 11:08:36
為什么二級封鎖協議不能保證可重復讀,一級封鎖協議不能保證可重復讀和讀臟數據?

一、為什么二級封鎖協議不能保證可重復讀排它鎖又叫寫鎖,事務A對數據D加了排它鎖,其它任何事務都不能再對數據D加共享鎖或者排它鎖。也就是說A...詳情>>

2023-10-13 11:01:05
用access做一個數據庫,用戶登錄界面,不同用戶權限不同,應該怎么設置?

一、用access做一個數據庫,用戶登錄界面,不同用戶權限不同用access做一個數據庫,用戶登錄界面,不同用戶權限不同,應該設置三張表:用戶表,...詳情>>

2023-10-13 10:57:31
主站蜘蛛池模板: 汕头市| 永寿县| 陆河县| 黔西县| 中宁县| 密山市| 舞阳县| 海南省| 卓尼县| 尼玛县| 山阴县| 鸡西市| 高平市| 全州县| 体育| 镇原县| 上饶县| 汤原县| 西乌珠穆沁旗| 罗田县| 大厂| 翁牛特旗| 江川县| 长泰县| 苍溪县| 陵川县| 富顺县| 尉氏县| 翼城县| 喀喇| 澎湖县| 木里| 无为县| 伊金霍洛旗| 孝昌县| 定陶县| 桃园市| 富平县| 长白| 宁夏| 乐都县|