docker核心概念
docker思想
解決的問(wèn)題:
1)運(yùn)行環(huán)境一致問(wèn)題
2)部署的系統(tǒng)獨(dú)立 不相互影響
3)快速擴(kuò)展、彈性伸縮
docker使用C/S架構(gòu)酒来,Client 通過(guò)接口與Server進(jìn)程通信實(shí)現(xiàn)容器的構(gòu)建卢未,運(yùn)行和發(fā)布。client和server可以運(yùn)行在同一臺(tái)集群堰汉,也可以通過(guò)跨主機(jī)實(shí)現(xiàn)遠(yuǎn)程通信辽社。
build:構(gòu)建鏡像
ship:存儲(chǔ)滴铅、運(yùn)輸鏡像
run:執(zhí)行鏡像
Docker 鏡像(Image)
鏡像=操作系統(tǒng)+軟件運(yùn)行環(huán)境+用戶程序。鏡像可以用來(lái)創(chuàng)建 Docker 容器就乓,一個(gè)鏡像可以創(chuàng)建很多容器汉匙。
通過(guò)聯(lián)合文件系統(tǒng)達(dá)到文件分層的效果,鏡像就是一系列分層文件的組合生蚁,這些文件是只讀的
右邊我們看到了多個(gè)只讀層噩翠,它們重疊在一起。除了最下面一層邦投,其它層都會(huì)有一個(gè)指針指向下一層伤锚。這些層是Docker內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),并且能夠在docker宿主機(jī)的文件系統(tǒng)上訪問(wèn)到志衣。統(tǒng)一文件系統(tǒng)(Union File System)技術(shù)能夠?qū)⒉煌膶诱铣梢粋€(gè)文件系統(tǒng)屯援,為這些層提供了一個(gè)統(tǒng)一的視角,這樣就隱藏了多層的存在蠢涝,在用戶的角度看來(lái)玄呛,只存在一個(gè)文件系統(tǒng)。
倉(cāng)庫(kù)(repository)
倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所和二。有時(shí)候會(huì)把倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)混為一談徘铝,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù)惕它,每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像怕午,每個(gè)鏡像有不同的標(biāo)簽(tag)。
倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式淹魄。最大的公開(kāi)倉(cāng)庫(kù)是 Docker Hub郁惜,存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)包括 時(shí)速云 甲锡、網(wǎng)易云 等兆蕉,可以提供大陸用戶更穩(wěn)定快速的訪問(wèn)。當(dāng)然缤沦,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有倉(cāng)庫(kù)虎韵。
當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉(cāng)庫(kù),這樣下次在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候缸废,只需要從倉(cāng)庫(kù)上 pull 下來(lái)就可以了包蓝。
Docker 倉(cāng)庫(kù)的概念跟 Git 類似,注冊(cè)服務(wù)器可以理解為 GitHub 這樣的托管服務(wù)企量。
常用倉(cāng)庫(kù)地址
dockers hub :? https://hub.docker.com/
網(wǎng)易蜂巢:https://c.163.com/hub#/m/home/
靈雀云:https://hub.alauda.cn/
Docker 中國(guó)官方鏡像加速(https://www.docker-cn.com/registry-mirror):registry.docker-cn.com
daocloud 加速器:http://www.daocloud.io/mirror
阿里云:https://dev.aliyun.com/search.html
容器(container)
Docker 利用容器(Container)來(lái)運(yùn)行應(yīng)用测萎。容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)届巩、開(kāi)始硅瞧、停止、刪除姆泻。每個(gè)容器都是相互隔離的零酪、保證安全的平臺(tái)∧床可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux 環(huán)境(包括root用戶權(quán)限四苇、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序方咆。
容器的定義和鏡像 唯一區(qū)別在于容器的最上面那一層是可讀可寫(xiě)的月腋。
如果程序需要對(duì)鏡像進(jìn)行修改,那么Docker會(huì)把要修改的鏡像文件拷貝到最上層的容器中瓣赂,然后再進(jìn)行修改榆骚。往后對(duì)該文件的訪問(wèn)會(huì)優(yōu)先從容器中讀取,尋找文件的順序是從下往下煌集。
一個(gè)運(yùn)行態(tài)容器被定義為一個(gè)可讀寫(xiě)的統(tǒng)一文件系統(tǒng)加上隔離的進(jìn)程空間和包含其中的進(jìn)程妓肢。下面這張圖片展示了一個(gè)運(yùn)行中的容器,正是文件系統(tǒng)隔離技術(shù)使得Docker成為了一個(gè)非常有潛力的虛擬化技術(shù)苫纤。一個(gè)容器中的進(jìn)程可能會(huì)對(duì)文件進(jìn)行修改碉钠、刪除纲缓、創(chuàng)建,這些改變都將作用喊废。(主要是依靠文件系統(tǒng)隔離技術(shù)祝高,讓每個(gè)容器可以被看做是一個(gè)虛擬機(jī),但其實(shí)就是一個(gè)進(jìn)程)
容器網(wǎng)絡(luò)鏈接
(跟虛擬機(jī)設(shè)置網(wǎng)絡(luò)鏈接方式相同)
docker 容器與虛擬機(jī)的區(qū)別:
1污筷、容器為一次性工闺,一般不存儲(chǔ)數(shù)據(jù)(使用數(shù)據(jù)庫(kù)docker時(shí),相當(dāng)于操作系統(tǒng)在容器中瓣蛀,數(shù)據(jù)內(nèi)容則存儲(chǔ)在數(shù)據(jù)卷中)
筆記部分內(nèi)容為https://www.cnblogs.com/SzeCheng/p/6822905.html 陆蟆、?https://www.imooc.com/learn/824 精華