您好,登錄后才能下訂單哦!
首發:arppinging
Docker是一種容器技術,也是虛擬化技術的一種。
主機級虛擬化可以分為兩種,分別是Type-Ⅰ和Type-Ⅱ,下面分別介紹這兩種主機虛擬化。
Type-Ⅰ的主機級虛擬化,直接在物理硬件上面安裝虛擬化操作系統,如Vmware的ESXi,然后在虛擬化層上安裝虛擬機。
Type-Ⅱ主機級虛擬化:在原有的操作系統上面安裝虛擬化軟件,比如vmware workstation等,再在虛擬化軟件上創建操作系統。
可以看出,在容器級虛擬化中,容器中是沒有獨立的操作系統內核的,容器直接部署在主機的操作系統上。
1、type-Ⅰ虛擬化:每個虛擬機都有自己獨立的系統內核,可以直接通過虛擬化層和硬件交互。
2、Type-Ⅱ虛擬化:每個虛擬機都有自己獨立的操作系統,想比type-Ⅰ,增加了一層虛擬化軟件,而虛擬化軟件本身可能會存在安全風險。
3、容器級虛擬化:在容器級虛擬化中,所有的容器都共享一個內核,在隔離性方面沒有主機級虛擬化那么徹底。
1、docker容器啟動速度快,大多數docker容器只需要不到1s的時間即可啟動。
2、docker建模簡單、快捷,用戶只需要幾分鐘即可把自己的程序“docker化”
3、使職責的邏輯分離,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如何管理容器即可。
4、快速、高效的開發生命周期,docker具有很高的移植性。
5、docker使得分布式應用程序部署更加方面。
Docker是一個C/S架構的程序,Docker客戶端只需向服務器或守護進程發出請求,服務器或守護進程將完成所有的工作并返回結果。
客戶端和服務器可以在同一臺服務器上,也可以是不同的機器。可以將服務器理解為nginx服務,客戶端理解為web瀏覽器即可。
鏡像時Docker的基石,用戶基于鏡像運行容器。鏡像類似于可導入vmware workstation 運行的ova文件,只不過docker的鏡像只需要創建和運行即可,不需要再次構建系統內核。鏡像就是容器的“源代碼”,體積小、易分享和更新。
Registry是存放鏡像的倉庫,Registry分為公共和私有兩種,Docker公司運營的公共Registry叫作Docker Hub,私有的一般是公司內部的鏡像倉庫。
容器是基于鏡像啟動起來的,容器中可以運行一個或多個進程。可以認為,鏡像是Docker生命周期中的構建或者打包階段,而容器則是啟動或執行階段。
如果說鏡像類似于OVA文件,那么容器就類似于我們將OVA文件導入vmware workstation 中,然后點擊運行的狀態。
每個容器都包含一個鏡像,如果將容器看成一個集裝箱(下圖用貨車表示),那么鏡像就是里面的貨物。
鏡像(貨物)可以被創建、啟動、關閉、重啟以及銷毀,就類似于裝貨、卸貨這種操作。docker并不關心容器里面到底是什么,是web服務?還是數據庫?不管是什么,docker都會以統一的標準進行“裝載”。
總結起來,Docker容器就是:
Docker可以運行在任何安裝了64bit Linux的主機上,docker開銷低,但主機上還應該支持以下功能:
3.1 一個原生的Linux容器格式
Docker稱為libcontainer。因為不論是什么鏡像,docker都會以同一種格式進行裝載。
3.2 Linux內核的命名空間(namespace)
因為一臺服務器上的所有容器都會共享一個內核,如果容器之間不是獨立的話可能會出現一些問題。比如兩個運行nginx的容器,都需要用到80端口,
這就會發生搶占,導致服務不可用。
命名空間可以為以下資源進行獨立分隔:
1.UTS:主機名和域名
2.IPC:信號量、消息隊列和共享內存
3.PID:進程編號
4.Network:網絡設備、網絡棧、端口等
5.Mount:掛載點
6.User:用戶和用戶組
3.3 資源隔離和分組(cgourps)
control group,cgroups可以將cpcu和內存之類的硬件資源獨立分配給每個docker容器。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。