Docker(1)- 什么是 Docker
1|0學(xué)習(xí) Docker 前的必備知識(shí)
1|1環(huán)境配置的煩惱
軟件開發(fā)最大的麻煩事之一,就是環(huán)境配置
相信每位編程初學(xué)者都會(huì)在環(huán)境配置上倒騰很久,而作為老師也會(huì)因?yàn)椴煌瑱C(jī)器出現(xiàn)五花八門的環(huán)境配置問題而煩惱
想要軟件正常運(yùn)行,那么系統(tǒng)的設(shè)置和各種庫(kù)、組件正確的安裝才能如期運(yùn)行
舉例來說,安裝一個(gè) Python 應(yīng)用,計(jì)算機(jī)必須有 Python 引擎,還必須有各種依賴,可能還要配置環(huán)境變量
當(dāng)你需要換機(jī)器的時(shí)候,你之前所配置的環(huán)境又要重頭來一遍,非常麻煩
1|2很久以前的應(yīng)用部署方式
介紹

在一個(gè)物理服務(wù)器上面安裝系統(tǒng),直接部署應(yīng)用
缺點(diǎn)
部署非常慢
成本非常高
資源浪費(fèi):部署的應(yīng)用并不會(huì)占滿服務(wù)器資源,會(huì)有大部分的空閑資源
難于遷移和擴(kuò)展:像上面說到的,換臺(tái)服務(wù)器,環(huán)境又要重新配
可能會(huì)被限定硬件廠商:底層系統(tǒng)架構(gòu)不同
1|3虛擬化技術(shù)出現(xiàn)后的應(yīng)用部署方式
虛擬化介紹

一個(gè)主機(jī)部署多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)可以部署多個(gè)應(yīng)用
比如在 Windows 系統(tǒng)里面運(yùn)行 Linux 系統(tǒng)的 VM
對(duì)于底層系統(tǒng)(主機(jī))來說,虛擬機(jī)就是一個(gè)普通文件,不需要就刪掉,對(duì)主機(jī)沒有影響
虛擬化優(yōu)點(diǎn)
資源池:一個(gè)物理機(jī)的資源分配到了不同的虛擬機(jī)
易擴(kuò)展:添加物理主機(jī)或虛擬機(jī)
易云化:阿里云、AWS 提供虛擬化技術(shù)
虛擬化局限性
資源占用多:每一個(gè)虛擬機(jī)都是一個(gè)完整的操作系統(tǒng),要給其分配資源,當(dāng)虛擬機(jī)數(shù)量增多時(shí),物理主機(jī)本身消耗的資源勢(shì)必增多
冗余步驟多:虛擬機(jī)是完整的操作系統(tǒng),一些系統(tǒng)級(jí)別的操作步驟,往往無(wú)法跳過,比如用戶登錄
啟動(dòng)慢:?jiǎn)?dòng)操作系統(tǒng)需要多久,啟動(dòng)虛擬機(jī)就需要多久。可能要等幾分鐘,應(yīng)用程序才能真正運(yùn)行
2|0容器的基礎(chǔ)知識(shí)
2|1容器為什么會(huì)出現(xiàn)
上面也講述了單機(jī)部署應(yīng)用和虛擬機(jī)技術(shù)的局限性
容器的誕生就是為了解決這些局限性的
2|2什么是容器
對(duì)應(yīng)用軟件和其依賴的包進(jìn)行標(biāo)準(zhǔn)化打包
應(yīng)用之間相互隔離
共享同一個(gè) OSKernel
可以運(yùn)行在很多主流操作系統(tǒng)上
可以理解成:標(biāo)準(zhǔn)化軟件單元
2|3容器解決了什么問題
解決了開發(fā)和運(yùn)維之間的矛盾
在開發(fā)和運(yùn)維之間搭建了一個(gè)橋梁,是實(shí)現(xiàn) devops 的最佳解決方案
2|4容器和虛擬機(jī)的區(qū)別

容器和虛擬機(jī)都具有相似的資源隔離和分配特點(diǎn),但是功能不同,因?yàn)槿萜魈摂M化了操作系統(tǒng),而不是硬件,所以更加便攜和高效

2|5虛擬化 + 容器
其實(shí)就是 一臺(tái)物理機(jī)上部署多個(gè) VM,每個(gè) VM 上又可以有多個(gè)容器
容器和 VM 一起結(jié)合使用,在部署和管理應(yīng)用程序時(shí)提供了很大的靈活性

3|0Docker 的詳細(xì)介紹
3|1Docker 簡(jiǎn)介
Docker 是一個(gè)開源的應(yīng)用容器引擎,基于?Go?語(yǔ)言
可以打包應(yīng)用以及依賴包到一 個(gè)輕量級(jí)、可移植的容器中
Docker 打包好了的容器,可以發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化
容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(獨(dú)立)
容器性能開銷極低
Docker 使用客戶端-服務(wù)器?(C/S)?架構(gòu)模式,使用遠(yuǎn)程 API?來管理和創(chuàng)建 Docker 容器
Docker 是實(shí)現(xiàn)容器技術(shù)的一種工具
Docker 容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣
?
工作中的應(yīng)用場(chǎng)景
Web 應(yīng)用的自動(dòng)化打包和發(fā)布
自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布(我們的重點(diǎn))
組建微服務(wù)架構(gòu),通過多個(gè)容器,一臺(tái)機(jī)器可以跑多個(gè)服務(wù),因此在本機(jī)可以模擬出微服務(wù)架構(gòu)
3|2將軟件打包到容器中,以進(jìn)行開發(fā),運(yùn)輸和部署
容器是打包代碼及其所有依賴項(xiàng)的軟件的標(biāo)準(zhǔn)單元,所以該軟件可以從一個(gè)計(jì)算機(jī)環(huán)境快速可靠地在另一個(gè)計(jì)算機(jī)環(huán)境進(jìn)行運(yùn)行
Docker 容器鏡像是一個(gè)輕量級(jí)、獨(dú)立的、可執(zhí)行的軟件包,它包含運(yùn)行應(yīng)用程序所需的一切:運(yùn)行環(huán)境、系統(tǒng)工具、系統(tǒng)庫(kù)、配置?
容器鏡像在運(yùn)行時(shí)成為容器
容器化軟件都可用于基于 Linux 和 Windows 的應(yīng)用程序,始終運(yùn)行相同
容器將軟件與其環(huán)境隔離開來,即使存在差異,但軟件仍然可以運(yùn)行
3|3在 Docker 鏡像上運(yùn)行的 Docker 容器的優(yōu)勢(shì)
標(biāo)準(zhǔn):Docker 創(chuàng)建了容器的行業(yè)標(biāo)準(zhǔn),因此它們可以在任何地方移植
輕巧:容器共享機(jī)器的操作系統(tǒng)內(nèi)核,因此不需要每個(gè)應(yīng)用程序都用操作系統(tǒng),從而提高了服務(wù)器效率,并降低了服務(wù)器資源的消耗
安全:容器中的應(yīng)用程序更安全,Docker 提供業(yè)界最強(qiáng)大的默認(rèn)隔離功能
3|4Docker 架構(gòu)

架構(gòu)圖箭頭的意思大概是
在 Docker Client 敲 Docker 命令調(diào)用 Docker API 來操作 Host 上的 Docker 服務(wù)
Docker 服務(wù)可以從倉(cāng)庫(kù)拉鏡像到本機(jī),也可以用本機(jī)鏡像創(chuàng)建一個(gè)容器并運(yùn)行
倉(cāng)庫(kù)(Registry)
集中存放鏡像文件的場(chǎng)所
每個(gè)鏡像文件有不同的標(biāo)簽(不同的版本)
最大的開放倉(cāng)庫(kù)是Docker Hub:?https://hub.docker.com/?存放了數(shù)量龐大的鏡像供用戶下載
國(guó)內(nèi)的公開倉(cāng)庫(kù)包括阿里云,網(wǎng)易云等
倉(cāng)庫(kù)分為公開倉(cāng)庫(kù)(public)和私有倉(cāng)庫(kù)(private)兩種形式
?
鏡像(Images)
創(chuàng)建容器的模板
一個(gè)鏡像可以創(chuàng)建很多容器
?
容器(Containers)
容器是鏡像生成的運(yùn)行實(shí)例
Docker 利用容器獨(dú)立運(yùn)行一個(gè)或一組應(yīng)用(服務(wù))
每個(gè)容器之間是相互隔離的
它可以被啟用、開始、停止、刪除
?
主機(jī)(HOST)
一個(gè)物理機(jī)或虛擬機(jī)
用于運(yùn)行 Docker 守護(hù)進(jìn)程和多個(gè)容器
可存放多個(gè)鏡像
也稱為宿主機(jī),node節(jié)點(diǎn)
?
Docker 守護(hù)程序(daemon)
監(jiān)聽 Docker API 請(qǐng)求
也會(huì)管理 Docker 對(duì)象,如:鏡像、容器、網(wǎng)絡(luò)、卷
守護(hù)程序還可以與其他守護(hù)程序通信以管理 Docker 服務(wù)
?
Docker 客戶端(client)
客戶端使用 Docker 命令或其他工具調(diào)用 Docker API
當(dāng)然也可以在 HOST 直接敲 Docker 命令
客戶端可以與多個(gè) Docker 守護(hù)程序通信
?
官方介紹文檔:https://docs.docker.com/get-started/overview/
本文轉(zhuǎn)載自:https://www.cnblogs.com/poloyy/p/13898977.html