Docker基础篇
目錄:
- docker介紹
- Docker的概念
- 容器
- docker技術(shù)應(yīng)用場(chǎng)景
- docker解決的問題
- Docker架構(gòu)
- docker與虛擬機(jī)比較
- copy和add的區(qū)別
docker介紹
docker思想
- Docker的思想源于集裝箱,集裝箱解決了什么問題呢?
- 在早期運(yùn)輸貨物需要不同分類的船,例如運(yùn)輸水果的船,運(yùn)輸生活用品的船
- 有了集裝箱后,在大船上,可以把貨物分類到不同的集裝箱中,水果一個(gè)集裝箱,生活用品一個(gè)集裝箱
- 它們之間互不影響,只要把貨物封裝好集裝箱里,就可以把不同類的貨物一起運(yùn)走。
- 通過Docker logo也可以看出所以然來,Docker就像大船,集裝箱就是容器
- 一條鯨魚拖著若干個(gè)集裝箱的經(jīng)典形象已經(jīng)深入人心
Docker的概念
容器
每個(gè)容器擁有一套和宿主機(jī)完全隔離的文件系統(tǒng)(共用linux內(nèi)核),程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣
- 容器是一個(gè)操作系統(tǒng)級(jí)別下的虛擬化技術(shù),運(yùn)行一個(gè)容器就像運(yùn)行一個(gè)進(jìn)程一樣
- 容器依賴linux內(nèi)核特性:Namespace(資源隔離)和 Cgroups(資源限制)
資源隔離:
1)Linux Namespaces機(jī)制提供一種資源隔離方案,每個(gè)Namespace看上去就像一個(gè)單獨(dú)的Linux系統(tǒng)。
2)PID,IPC(進(jìn)程通信),Network等系統(tǒng)資源不再是全局性的,而是屬于某個(gè)特定的Namespace。
3)每個(gè)Namespace下的資源對(duì)于其他namespace下的資源都是透明,不可見的。
4)系統(tǒng)中可以同時(shí)存在兩個(gè)進(jìn)程號(hào)為0,1,2的進(jìn)程,由于屬于不同的Namespace,所以它們之間并不沖突。
5)而在用戶層面上只能看到屬于用戶自己Namespace下的資源,例如使用ps命令只能列出自己Namespace下的進(jìn)程。
6)這樣每個(gè)Namespace看上去就像一個(gè)單獨(dú)的Linux系統(tǒng)。
資源限制:
1)為了讓容器中的進(jìn)程更加可控,Docker 使用 Linux cgroups 來限制容器中的進(jìn)程允許使用的系統(tǒng)資源。
2)可以在啟動(dòng)容器是指定每個(gè)容器可以使用的 網(wǎng)絡(luò)、磁盤、CPU以及內(nèi)存 等
docker技術(shù)應(yīng)用場(chǎng)景
場(chǎng)景一:節(jié)省項(xiàng)目環(huán)境部署時(shí)間
1)單項(xiàng)目打包
2)整套項(xiàng)目打包
3)新開源技術(shù)試用
有時(shí),我們想調(diào)研一些開源項(xiàng)目,我們可以直接從公共鏡像倉(cāng)庫(kù)pull項(xiàng)目官方做好鏡像啟動(dòng)容器即可。
場(chǎng)景二:環(huán)境一致性
場(chǎng)景三:持續(xù)集成
場(chǎng)景四:微服務(wù)
docker解決的問題
Docker架構(gòu)
- Docker客戶端(Client): docker 命令行工具,用戶也可以通過 REST API 與服務(wù)器通信
- Docker服務(wù)器(Docker daemon): 服務(wù)器組件,以 Linux 后臺(tái)服務(wù)的方式運(yùn)行, Docker daemon 運(yùn)行在 Docker host 上,負(fù)責(zé)創(chuàng)建、運(yùn)行、監(jiān)控容器,構(gòu)建、存儲(chǔ)鏡像
- Docker鏡像(Image): 可將 Docker 鏡像看著只讀模板,通過它可以創(chuàng)建 Docker 容器
- 鏡像倉(cāng)庫(kù)(Registry):Registry 是存放 Docker 鏡像的倉(cāng)庫(kù),Registry 分私有和公有兩種
- Docker容器(Container):Docker 容器就是 Docker 鏡像的運(yùn)行實(shí)例
docker與虛擬機(jī)比較
舉例:
1)Docker就是手機(jī)中的各種APP,只需要一個(gè)系統(tǒng)就可以下載自己所需的應(yīng)用
2)虛擬化技術(shù)相當(dāng)于蘋果手機(jī)安裝一個(gè)龐大軟件,這個(gè)軟件上安裝安卓系統(tǒng)、魅族系統(tǒng)等,每個(gè)系統(tǒng)上還要安裝各類應(yīng)用。
copy和add的區(qū)別:
copy一般是拷貝主機(jī)不同文件夾的數(shù)據(jù)
add:可以拷貝宿主機(jī)文件到容器中,而且可以執(zhí)行網(wǎng)絡(luò)命令
來自于原址參考
總結(jié)
- 上一篇: Redis事物分布式锁
- 下一篇: WebsocketWebSSH