容器

容器其實是一種沙盒技術。顧名思義,沙盒就是能夠像一個集裝箱一樣,把你的應用"裝"起來的技術。這樣,應用與應用之間,就因為有了邊界而不至于相互干擾;而被裝進集裝箱的應用,也可以被方便地搬來搬去,這其實是 PaaS 最理想的狀態(tài)。


問題:容器的本質到底是什么?

容器的本質是進程。容器就是未來云計算系統(tǒng)中的進程;容器鏡像就是這個系統(tǒng)里的".exe"安裝包。Kubernetes 就是操作系統(tǒng)!

Docker介紹:

官網:

????docker.io

????docker.com

公司名稱:原名dotCloud ?14年改名為docker

容器產品:docker 16年已經被更名為Moby


容器

web容器 web中間件

????????html (nginx apache )

php (php模塊 ?php-fpm)

java(tomcat weblogic Resin JBoss ?WebSphere )

????????????python (uwsgi) ?web server gateway interface


nginx+tomcat+jdk weblogic

nginx+(nginx+php-fpm)

nginx+uwsgi+django

mycat ?mysql-proxy數(shù)據(jù)庫中間件 ??????????

devops(運維開發(fā),早些年指的運維和開發(fā)精通的。)

rd

1.部署開發(fā)環(huán)境 ?單機環(huán)境

2.軟件開發(fā)

3.測試

4.打包


op ??????????

1.測試環(huán)境 ??

2.線上環(huán)境(上線工具 u盤 ftp scp rsync svn git github gitlab ci/cd+容器平臺:git+jenkins+jdk+maven+tomcat+容器鏡像庫服務器+k8s集群 )

運維

1.rd開發(fā)產品(需要配置開發(fā)環(huán)境)lamp

2.測試(需要配置測試環(huán)境)

3.op上線(需要線上環(huán)境)

開發(fā)測試運維開戰(zhàn)


1. ?rd開發(fā)產品(需要在docker容器里配置開發(fā)環(huán)境) ?????

2.把容器打包成鏡像交給運維,運維上線 ??????


Docker跟原有的工具區(qū)別:

傳統(tǒng)的部署模式是:????安裝(包管理工具或者源碼包編譯)->配置->運行;

Docker的部署模式是:復制->運行。


容器和VM的主要區(qū)別:

1. 容器提供了基于進程的隔離,而虛擬機提供了資源的完全隔離。

2. 虛擬機可能需要一分鐘來啟動,而容器只需要一秒鐘或更短。

3. 容器使用宿主操作系統(tǒng)的內核,而虛擬機使用獨立的內核

4.容器只是一個進程,而虛擬機不是


Docker對服務器端開發(fā)/部署帶來的變化:

實現(xiàn)更輕量級的虛擬化,方便快速部署

對于部署來說可以極大的減少部署的時間成本和人力成本

Docker支持將應用打包進一個可以移植的容器中,重新定義了應用開發(fā),測試,部署上線的過程,核心理念就

是Build once, Run anywhere

1)標準化應用發(fā)布,docker容器包含了運行環(huán)境和可執(zhí)行程序,可以跨平臺和主機使用;

2)節(jié)約時間,快速部署和啟動,VM啟動一般是分鐘級,docker容器啟動是秒級;

3)方便構建基于SOA架構或微服務架構的系統(tǒng),通過服務編排,更好的松耦合;

4)節(jié)約成本,以前一個虛擬機至少需要幾個G的磁盤空間,docker容器可以減少到MB級;

5)方便持續(xù)集成,通過與代碼進行關聯(lián)使持續(xù)集成非常方便;

6)可以作為集群系統(tǒng)的輕量主機或節(jié)點,在IaaS平臺上,已經出現(xiàn)了CaaS,通過容器替代原來的主機。

iaas ????infrastructure as a service

paas ???platform as a service

saas ???software as a service

dsaas ??data storage as a service

caas ???container as a service


Docker優(yōu)勢:

1、交付物標準化

Docker是軟件工程領域的"標準化"交付組件,最恰到好處的類比是"集裝箱"。

集裝箱將零散、不易搬運的大量物品封裝成一個整體,集裝箱更重要的意義在于它提供了一種通用的封裝貨物的

標準,卡車、火車、貨輪、橋吊等運輸或搬運工具采用此標準,隧道、橋梁等也采用此標準。以集裝箱為中心的

標準化設計大大提高了物流體系的運行效率。

傳統(tǒng)的軟件交付物包括:應用程序、依賴軟件安裝包、配置說明文檔、安裝文檔、上線文檔等非標準化組件。

Docker的標準化交付物稱為"鏡像",它包含了應用程序及其所依賴的運行環(huán)境,大大簡化了應用交付的模式。


2、一次構建,多次交付

類似于集裝箱的"一次裝箱,多次運輸",Docker鏡像可以做到"一次構建,多次交付"。當涉及到應用程序多副本

部署或者應用程序遷移時,更能體現(xiàn)Docker的價值。


3、應用隔離

集裝箱可以有效做到貨物之間的隔離,使化學物品和食品可以堆砌在一起運輸。Docker可以隔離不同應用程序之間的相互影響,但是比虛擬機開銷更小。

總之,容器技術部署速度快,開發(fā)、測試更敏捷;提高系統(tǒng)利用率,降低資源成本。

Docker的度量:

Docker是利用容器來實現(xiàn)的一種輕量級的虛擬技術,從而在保證隔離性的同時達到節(jié)省資源的目的。Docker的

可移植性可以讓它一次建立,到處運行。Docker的度量可以從以下四個方面進行:

1)隔離性

Docker采用libcontainer作為默認容器,代替了以前的LXC。libcontainer的隔離性主要是通過內核的命名空

間來實現(xiàn)的,有pid、net、ipc、mnt、uts命令空間,將容器的進程、網絡、消息、文件系統(tǒng)和主機名進行隔

離。

2)可度量性

Docker主要通過cgroups控制組來控制資源的度量和分配。

3)移植性

Docker利用AUFS來實現(xiàn)對容器的快速更新。

AUFS是一種支持將不同目錄掛載到同一個虛擬文件系統(tǒng)下的文件系統(tǒng),支持對每個目錄的讀寫權限管理。AUFS具有層

的概念,每一次修改都是在已有的只寫層進行增量修改,修改的內容將形成新的文件層,不影響原有的層。

4)安全性

安全性可以分為容器內部之間的安全性;容器與托管主機之間的安全性。

容器內部之間的安全性主要是通過命名空間和cgroups來保證的。

容器與托管主機之間的安全性主要是通過內核能力機制的控制,可以防止Docker非法入侵托管主機。


Docker容器使用AUFS作為文件系統(tǒng),有如下優(yōu)勢:

1)節(jié)省存儲空間

多個容器可以共享同一個基礎鏡像存儲。

2)快速部署

如果部署多個來自同一個基礎鏡像的容器時,可以避免多次復制操作。

3)升級方便

升級一個基礎鏡像即可影響到所有基于它的容器。

4)增量修改

可以在不改變基礎鏡像的同時修改其目錄的文件,所有的更高都發(fā)生在最上層的寫操作層,增加了基礎鏡像的可共享內容。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容