亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Docker運(yùn)行原理概述

Client-Server架構(gòu)

  • docker守護(hù)進(jìn)程運(yùn)行在宿主機(jī)上systemctl start docker
  • daemon進(jìn)程通過socket從客戶端(docker命令)接受命令來運(yùn)行管理各個容器
  • 容器是一個運(yùn)行時環(huán)境,可以看做是運(yùn)行中的精簡版linux系統(tǒng)

docker容器技術(shù) vs 虛擬機(jī)技術(shù)(VMware等)

  • 對比角度:程序運(yùn)行所在系統(tǒng)、存儲占用、運(yùn)行性能、移植性(類比JDK)。
  • 不再需要Hypevisor硬件資源虛擬化的抽象層,運(yùn)行在docker容器上的程序直接使用實(shí)際宿主物理機(jī)的硬件資源,從而在CPU和內(nèi)存利用率上有明顯優(yōu)勢。
  • docker新建一個容器時,是直接使用宿主機(jī)的內(nèi)核。VMware新建一個虛擬機(jī)時,需要加載GuestOS內(nèi)核(VMware上下載的各個os),這個過程至少分鐘級別,而docker新建容器則是秒級別。
  • 官方對比圖↓
  • docker
docker運(yùn)行原理與使用總結(jié)

 

  •  
  • 虛擬機(jī)
docker運(yùn)行原理與使用總結(jié)

 

  •  

docker鏡像原理

鏡像是什么

  • 輕量級、可執(zhí)行的獨(dú)立軟件包
  • 打包了運(yùn)行某個軟件(比如Tomcat鏡像)所需的所有內(nèi)容,包括:
  • 代碼(tomcat代碼)
  • 運(yùn)行時環(huán)境(OS、JDK)
  • 依賴庫
  • 環(huán)境變量
  • 配置文件等
  • 底層基礎(chǔ)是Union File System(聯(lián)合文件系統(tǒng))
  • UnionFS:一種分層、輕量級且高性能的文件系統(tǒng),支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,也支持將不同目錄掛載到同一虛擬文件系統(tǒng)下。
  • 鏡像由一層層的文件系統(tǒng)組成,通過分層進(jìn)行繼承。基于基礎(chǔ)鏡像,可以制作出各種具體的應(yīng)用鏡像
  • 鏡像運(yùn)行時,一次聯(lián)合加載多個文件系統(tǒng),根據(jù)繼承關(guān)系進(jìn)行疊加,最終外部只看到一個文件系統(tǒng),但擁有了完整的文件和目錄結(jié)構(gòu)。

鏡像加載原理

  • 鏡像實(shí)際有一層層的文件系統(tǒng)組成,即UnionFS。
  • 文件系統(tǒng)層級中主要關(guān)注bootfs和rootfs
  • bootfs包括BootLoader和kernel(操作系統(tǒng)內(nèi)核),BootLoader主要是引導(dǎo)加載kernel。同Linux,docker鏡像最底層是bootfs。Linux系統(tǒng)啟動時,會加載bootfs,然后BootLoader加載kernel(Linux內(nèi)核)至內(nèi)存,完成之后內(nèi)存的使用權(quán)由bootfs轉(zhuǎn)移給內(nèi)核,接著卸載掉bootfs。
  • rootfs包含了我們熟悉的Linux文件目錄結(jié)構(gòu):/dev/ /proc/ /bin/ /etc/ 等。對于不同的Linux發(fā)行版(Ubuntu、centos等),bootfs基本一致(內(nèi)核相同,都是Linux-kernel),而rootfs會有差別。
  • why一個centos的docker鏡像只有200M,而VMware的centos系統(tǒng)鏡像幾個G?
  • 對于一個精簡的Linux系統(tǒng),rootfs可以很小,只需要包括最基本的命令、工具和程序庫就OK了。
  • docker容器共用了宿主機(jī)的系統(tǒng)內(nèi)核,只需要提供精簡的rootfs就OK,所以docker的os鏡像體積可以這么小,因此可以把docker容器看做一個精簡的Linux系統(tǒng)。
  • why一個tomcat的docker鏡像反而比一個centos的docker鏡像大得多
  • 每個應(yīng)用級別的docker鏡像,都是源于基礎(chǔ)鏡像(聯(lián)合文件系統(tǒng)),類比JAVA中的Object類,一層層繼承得到的。
  • centos鏡像拉取:
[root@richardCentos ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
d8d02d457314: Pull complete 
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
  • tomcat鏡像拉取:
[root@richardCentos ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
9cc2ad81d40d: Pull complete 
e6cb98e32a52: Pull complete 
ae1b8d879bad: Pull complete 
42cfa3699b05: Pull complete 
8d27062ef0ea: Pull complete 
9b91647396e3: Pull complete 
7498c1055ea3: Pull complete 
a183d8c2c929: Pull complete 
73dd800dda4c: Pull complete 
2bc71ef979ec: Pull complete 
Digest: sha256:80db17f3efd9cdcd9af7c799097fe0d223bbee8f25aa36234ab56292e3d8bd7b
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
  • 很明顯,tomcat需要聯(lián)合的鏡像更多,可以想象這樣的繼承關(guān)系:
  • kernel < centos < jdk < tomcat
  • docker鏡像都是只讀的,但當(dāng)容器啟動時,一個新的可寫層會加載到鏡像的頂層,這一層稱為“容器層”,即我們進(jìn)行容器交互操作的對外層,容器層之下的都叫“鏡像層”。

分享到:
標(biāo)簽:docker
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定