docker鏡像是基礎(chǔ)加應(yīng)用,是一個(gè)軟件從最頂層一直到最底層系統(tǒng)庫的完整依賴棧。有了這樣一個(gè)完整的依賴棧,再加上容器技術(shù)的隔離性,就能在任何地方把應(yīng)用啟動(dòng)起來,且保證行為一致,只要內(nèi)核在docker要求的最低版本之上就行。這種結(jié)合帶來了一種嶄新的運(yùn)維模式,并以此為基礎(chǔ)爆發(fā)出一個(gè)繁榮的生態(tài)。
鏡像:
? ? ? ?Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變。
分層存儲(chǔ)。一層層構(gòu)建,前一層是后一層的基礎(chǔ),由多層文件系統(tǒng)聯(lián)合組成。
每一層構(gòu)建好后就不會(huì)在變,前一層刪除后一層文件時(shí),只是做標(biāo)記,不會(huì)真正刪除。
容器:
? ? ? ? 鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。
容器的實(shí)質(zhì)是進(jìn)程,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運(yùn)行于屬于自己的獨(dú)立的命名空間。
容器銷毀,數(shù)據(jù)隨之被刪除。任何保存于容器存儲(chǔ)層的信息都會(huì)隨容器刪除而丟失。
鏡像是容器的基礎(chǔ),每次執(zhí)行 docker run 的時(shí)候都會(huì)指定哪個(gè)鏡像作為容器運(yùn)行的基礎(chǔ)。
在運(yùn)行的容器中做文件修改,然后docker commit,就相當(dāng)于在原有鏡像的基礎(chǔ)上,再疊加上容器的存儲(chǔ)層,并構(gòu)成新的鏡像。實(shí)際環(huán)境中不會(huì)用(臃腫、透明)。
鏡像與容器的關(guān)系:通常用面向?qū)ο笾械念惻c對象來比喻
Docker Registry:
Docker Registry是集中的存儲(chǔ)、分發(fā)鏡像的服務(wù)
一個(gè) Docker Registry 中可以包含多個(gè)倉庫(Repository);每個(gè)倉庫可以包含多個(gè)標(biāo)簽(Tag);每個(gè)標(biāo)簽對應(yīng)一個(gè)鏡像。
Docker Registry公開服務(wù)與私有服務(wù)。
有點(diǎn)類似maven倉庫,也有公服、私服。
整體架構(gòu)
Docker采用了C/S架構(gòu),包括客戶端和服務(wù)端。 Docker daemon 作為服務(wù)端接受來自客戶的請求,并處理這些請求(創(chuàng)建、運(yùn)行、分發(fā)容器)。 客戶端和服務(wù)端既可以運(yùn)行在一個(gè)機(jī)器上,也可通過 socket 或者 RESTful API 來進(jìn)行通信。Docker daemon一般在宿主機(jī)后臺運(yùn)行,等待接收來自客戶端的消息。
為什么使用docker
更高效的利用系統(tǒng)資源。不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開銷行更多數(shù)量的應(yīng)用。
更快速啟動(dòng)時(shí)間。直接運(yùn)行于宿主內(nèi)核,無需啟動(dòng)完整的操作系統(tǒng)
一致的運(yùn)行環(huán)境
DEVOPS 持續(xù)集成與部署。
更輕松的遷移。
常用命令
容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作運(yùn)維 —?docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 —?docker [commit|cp|diff]
鏡像倉庫 —?docker [login|pull|push|search]
本地鏡像管理 —?docker [images|rmi|tag|build|history|save|import]
其他命令 —?docker [info|version]
學(xué)習(xí)資料
Docker學(xué)習(xí)路線圖
https://yq.aliyun.com/articles/40494
《Docker — 從入門到實(shí)踐》電子書:
https://www.gitbook.com/book/yeasy/docker_practice/details?spm=5176.100239.blogcont40494.63.KJ7hdw