docker(1):容器技術簡介


容器

https://baijiahao.baidu.com/s?id=1612742857373698780&wfr=spider&for=pc

https://www.cnblogs.com/along21/p/9183609.html#auto_id_0

1  容器簡介

容器是在隔離的環境運行的一個進程,如果進程停止,容器就會銷毀。隔離的環境擁有自己的文件系統,ip地址,主機名等。

容器是一種輕量級操作系統層面的虛擬機,它為應用軟件及其依賴組件提供了一個資源獨立的運行環境。應用軟件所依賴的組件會被打包成一個可重用的鏡像,鏡像運行環境並不會與主操作系統共享內存、CPU和硬盤空間,由此也保證了容器內部的進程與容器外部進程的獨立關系。

2  容器與虛擬化的區別

https://www.qstack.com.cn/archives/148.html

 

 

kvm虛擬化:需要硬件支持,需要模擬硬件,可以運行不同的操作系統。啟動時間分鍾級(開機啟動流程)

https://s1.51cto.com/images/20190402/1554187092648925.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

啟動流程:

BIOS開機硬件自檢

根據BIOS設置的優先啟動項

讀取MBR引導

GRUB菜單—單用戶(6),救援模式(7)

加載內核—啟動第一個進程init(6) system(7)……

 

 

 

容器由於省去了操作系統,整個層級更簡化,容器可以在單台服務器上運行更多的應用。

虛擬化技術針對每個虛擬機的資源分配是固定的。如下圖,三個虛擬機在一台計算機上運行,該計算機配備48 GB內存、12核處理器和3TB磁盤存儲空間,每個虛擬機被分配了16 GB內存、4核和1TB存儲空間,如果其中一個虛擬機使用的內存從不超過1GB,只存儲100MB的文件系統,該虛擬機仍占用4GB內存和整整1TB的存儲空間,仍是造成了大量的資源浪費。而容器則是以共享方式使用主機上的內存、處理器和存儲空間。

 

另外,虛擬機包含了完整的操作系統環境,同時還提供了對操作系統的控制支持。因此,虛擬機的規模較大,通常會達到數個G。在運行應用前,虛擬機需要預先花費幾分鍾來引導操作系統,然后才能初始化和運行應用程序。容器則規模較小,一般只有數個M,容器通常可以實現秒級啟動。

 

 

3  百花齊放的容器技術

  雖然 docker 把容器技術推向了巔峰,但容器技術卻不是從 docker 誕生的。實際上,容器技術連新技術都算不上,因為它的誕生和使用確實有些年頭了。下面的一串名稱肯能有的你都沒有聽說過,但它們的確都是容器技術的應用:

  • Chroot Jail
  • FreeBSD Jails
  • Linux VServer
  • Solaris Containers
  • OpenVZ
  • Process Containers
  • LXC
  • Warden
  • LMCTFY
  • Docker
  • RKT

1、Chroot Jail
就是我們常見的 chroot 命令的用法。它在 1979 年的時候就出現了,被認為是最早的容器化技術之一。它可以把一個進程的文件系統隔離起來。

2、The FreeBSD Jail
Freebsd Jail 實現了操作系統級別的虛擬化,它是操作系統級別虛擬化技術的先驅之一。

3、Linux VServer
使用添加到 Linux 內核的系統級別的虛擬化功能實現的專用虛擬服務器。

4、Solaris Containers
它也是操作系統級別的虛擬化技術,專為 X86 和 SPARC 系統設計。Solaris 容器是系統資源控制和通過 "區域" 提供邊界隔離的組合。

5、OpenVZ
OpenVZ 是一種 Linux 中操作系統級別的虛擬化技術。 它允許創建多個安全隔離的 Linux 容器,即 VPS。

6、Process Containers
Process 容器由 Google 的工程師開發,一般被稱為 cgroups。

7、LXC
LXC 又叫 Linux 容器,這也是一種操作系統級別的虛擬化技術,允許使用單個 Linux 內核在宿主機上運行多個獨立的系統。

8、Warden
在最初階段,Warden 使用 LXC 作為容器運行時。 如今已被 CloudFoundy 取代。

9、LMCTFY
LMCTY 是 Let me contain that for you 的縮寫。它是 Google 的容器技術棧的開源版本。
Google 的工程師一直在與 docker 的 libertainer 團隊合作,並將 libertainer 的核心概念進行抽象並移植到此項目中。該項目的進展不明,估計會被 libcontainer 取代。

10、Docker

Docker 是一個可以將應用程序及其依賴打包到幾乎可以在任何服務器上運行的容器的工具。

11、RKT
RKT 是 Rocket 的縮寫,它是一個專注於安全和開放標准的應用程序容器引擎。

 

4  在什么場景需要容器?

如果你遇到以下場景,推薦使用容器:

1. 部署無狀態服務,同虛擬機互補使用,實現隔離性

2. 如果要部署有狀態服務,需要對里面的應用十分的了解

3. 作為持續集成的重要工具,可以順利在開發,測試,生產之間遷移

4. 適合部署跨雲,跨Region,跨數據中心,混合雲場景下的應用部署和彈性伸縮

5. 以容器作為應用的交付物,保持環境一致性,樹立不可變更基礎設施的理念

6. 運行進程基本的任務類型的程序

7. 用於管理變更,變更頻繁的應用使用容器鏡像和版本號,輕量級方便的多

8. 使用容器一定要管理好應用,進行health check和容錯的設計

5  容器有哪些優點?

1. 敏捷開發:容器技術最大的優勢在於其快速的生成效率,輕量級的打包方式使其具有更好的性能和更小的規模。

2. 快速開發:容器解決了應用程序的平台依賴和平台沖突問題,從而幫助開發人員更快地開發程序。每個容器可被看作為一個微服務,因而可以單獨進行升級,而不必擔心同步問題。

3. 版本管理:容器中的鏡像可被單獨管理,由此可以追蹤、記錄、生成不同的容器版本,進而分析容器版本的差異。

4. 計算環境可移植:容器封裝了與應用相關的依賴組件及操作系統信息,由此減輕了應用在不同計算環境下的配置需求。例如,同一個鏡像可應用於Windows或Linux環境,並適用於開發、測試、部署等階段。

5. 標准化:容器通常基於開放標准而設計,因而容器在主流Linux系統及Windows系統上都是適用的。

6. 安全性:容器間的進程以及容器內外的進程是相互獨立的。因此,每個容器的升級或修改對其它容器都是沒有影響的。

7. 彈性伸縮:由於容器單元間相互獨立,由統一的編排工具管理,且編排工具具備發現容器節點的功能,所以容器的彈性擴容可以在短時間內自動完成;同時,由於每個容器均為獨立的個體,容器調用的資源和容器的使用由編排工具管理,所以減少某一容器節點不影響整個容器系統的使用。

8. 高可用:與彈性伸縮類似,在某一容器節點出現故障時,容器編排工具能夠及時發現節點的變化,並根據外部請求情況及時作出調整,不影響整個容器系統的使用,實現系統的高可用。

9. 管理便利:容器技術可通過簡單的命令行,完成對單一容器的管理,完成對鏡像的快速打包和遷移;同時也能通過Kubernetes、Swarm等工具,實現對大規模容器集群的管理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM