前言
記錄時(shí)間 [2024-4-5]
在先前的文章中,筆者進(jìn)行了Windows
系統(tǒng)下YOLOv8
模型的簡(jiǎn)單測(cè)試,并由此引發(fā)思考:是否能嘗試將此模型運(yùn)行在Linux
中呢?又或者,運(yùn)行在Docker
中。關(guān)于Docker
的學(xué)習(xí)就這么展開(kāi)了。
本文便是有關(guān)Docker
入門(mén)的開(kāi)篇之作,進(jìn)行Docker
概述,期待讀者能夠從一無(wú)所知到對(duì)Docker
有一個(gè)初步的認(rèn)識(shí)。
文章為零基礎(chǔ)學(xué)習(xí)Docker
做了一些準(zhǔn)備:
-
Docker
學(xué)習(xí)視頻(狂神說(shuō)系列) -
Docker
官方文檔(官方文檔超級(jí)詳細(xì)) -
Docker
遠(yuǎn)程倉(cāng)庫(kù)(相當(dāng)于鏡像商店)
Docker 概述
那么,Docker
為什么會(huì)出現(xiàn)呢?
相信大家對(duì)于環(huán)境這個(gè)詞一定很熟悉吧,開(kāi)發(fā)的項(xiàng)目需要在特定的環(huán)境中運(yùn)行,而有些環(huán)境的配置極其復(fù)雜,給運(yùn)維造成一定的困難。而Docker
,就是解決問(wèn)題的關(guān)鍵所在。
Docker
是一個(gè)開(kāi)源
的應(yīng)用容器引擎,基于Go語(yǔ)言
開(kāi)發(fā),其核心思想在于隔離
,即:將項(xiàng)目+它所需要的運(yùn)行環(huán)境打包安裝在各自的箱子里,每個(gè)箱子互相隔離。
Docker
通過(guò)隔離機(jī)制,能極大提升服務(wù)器的利用率。
Docker
廣泛運(yùn)用于開(kāi)發(fā)和運(yùn)維,能很好地解決環(huán)境搭建的麻煩,避免多個(gè)應(yīng)用端口沖突。通過(guò)下載發(fā)布的鏡像,幾乎能實(shí)現(xiàn)一套流程完成“開(kāi)發(fā)、打包、部署、上線”。
Docker 歷史
2010 年,Solomon Hykes
和朋友們?cè)诿绹?guó)舊金山成立了一家公司dotCloud
,最初主要提供基于LXC (Linux Container)
的PaaS
云計(jì)算服務(wù)。他們將自己的技術(shù),即容器化技術(shù),命名為Docker
。
然而,在誕生之初,Docker
并沒(méi)有引起行業(yè)的注意,直到 2013 年,Docker
開(kāi)源,開(kāi)源當(dāng)月發(fā)布了Docker 0.1
版本,此后每個(gè)月Docker
都會(huì)更新一個(gè)版本。后來(lái),越來(lái)越多的使用者發(fā)現(xiàn)了它的優(yōu)點(diǎn),于是它火了。
2014 年 6 月 9 日,Docker 1.0
版本正式發(fā)布!
Docker 優(yōu)勢(shì)(對(duì)比虛擬機(jī))
Docker
為什么會(huì)這么火?因?yàn)樗州p巧。
縱觀虛擬化技術(shù)的發(fā)展,在Docker
容器技術(shù)問(wèn)世前,虛擬機(jī)技術(shù)的使用占主導(dǎo)。在Windows
操作系統(tǒng)中安裝Vmware
軟件,再由該軟件虛擬出一臺(tái)或多臺(tái)電腦(Linux Centos
原生鏡像),這些虛擬出來(lái)的電腦即為虛擬機(jī)。而一臺(tái)虛擬機(jī)的內(nèi)存往往占好幾個(gè)G
,運(yùn)行起來(lái)非常笨重,更何況實(shí)現(xiàn)隔離需要開(kāi)啟多個(gè)虛擬機(jī)。
如圖,圖片來(lái)源,VM
會(huì)模擬出一臺(tái)完整的電腦,造成了資源和內(nèi)存的浪費(fèi)。而Docker
每個(gè)項(xiàng)目運(yùn)行在單獨(dú)的容器里,且容器直接運(yùn)行在OS
之上。容器化技術(shù)不是模擬一個(gè)完整的操作系統(tǒng)。
Docker
的抽象層比VM
少,運(yùn)行比VM
快。
虛擬機(jī)技術(shù)缺點(diǎn):
- 資源占用多
- 冗余步驟多
- 啟動(dòng)很慢
Docker
和虛擬機(jī)技術(shù)的不同之處:
- 傳統(tǒng)虛擬機(jī),虛擬出一套硬件,運(yùn)行一個(gè)完整的操作系統(tǒng),然后在這個(gè)系統(tǒng)上安裝和運(yùn)行軟件。
- 容器內(nèi)的應(yīng)用直接運(yùn)行在宿主機(jī)的內(nèi)核,容器沒(méi)有自己的內(nèi)核,也沒(méi)有虛擬硬件,因此十分輕巧。
- 不同容器之間互相隔離,每個(gè)容器內(nèi)都有一個(gè)屬于自己的文件系統(tǒng),互不影響,因而安全。
虛擬化技術(shù) | 鏡像 | 實(shí)現(xiàn)隔離 | 內(nèi)存 | 啟動(dòng)時(shí)間 |
---|---|---|---|---|
VM |
Linux Centos 原生鏡像(一個(gè)電腦) |
需要開(kāi)啟多個(gè)虛擬機(jī) |
G 級(jí)別 |
分鐘級(jí) |
Docker |
鏡像(最核心的環(huán)境) | 運(yùn)行鏡像即可 |
M 級(jí)別 |
秒級(jí) |
我們將容器技術(shù)與虛擬機(jī)技術(shù)進(jìn)行對(duì)比,不難看出,Docker
容器技術(shù)的優(yōu)勢(shì)明顯??梢哉f(shuō),開(kāi)發(fā)人員需要掌握這項(xiàng)技術(shù)。
Docker 作用(能干嘛)
DevOps
(開(kāi)發(fā)、運(yùn)維)
更快速的應(yīng)用交付和部署
- 傳統(tǒng):一堆幫助文檔,安裝程序;
-
Docker
:打包鏡像發(fā)布測(cè)試,一鍵運(yùn)行。
更便捷的升級(jí)和擴(kuò)縮容
- 使用
Docker
之后,可以將應(yīng)用部署到多個(gè)容器中; - 一個(gè)服務(wù)器上能運(yùn)行多個(gè)容器,容器之間可以交互;
- 方便應(yīng)用升級(jí)和擴(kuò)展。
更簡(jiǎn)單的系統(tǒng)運(yùn)維
- 保證開(kāi)發(fā)/測(cè)試環(huán)境的高度一致。
更高效的資源利用
-
Docker
是內(nèi)核級(jí)別的虛擬化,在一個(gè)物理機(jī)上可以運(yùn)行多個(gè)容器實(shí)例,服務(wù)器的性能可以被壓榨到極致。
Docker 基本組成
如圖(圖片來(lái)源網(wǎng)絡(luò)),Docker
由客戶端、服務(wù)器,和遠(yuǎn)程倉(cāng)庫(kù)三部分組成,在Docker
守護(hù)進(jìn)程中包含鏡像和容器,一個(gè)鏡像可以運(yùn)行在多個(gè)不同的容器中?;具^(guò)程:客戶端啟動(dòng)Docker
服務(wù),去遠(yuǎn)程倉(cāng)庫(kù)拉取鏡像,然后運(yùn)行在容器中。
鏡像image
-
Docker
鏡像類似于模板,通過(guò)這個(gè)模板可以創(chuàng)建容器服務(wù)。如:tomcat
鏡像 ==>run
==>tomcat01
容器(容器提供服務(wù)) - 通過(guò)這個(gè)鏡像可以創(chuàng)建多個(gè)容器,最終服務(wù)/項(xiàng)目運(yùn)行在容器中。
容器container
- 容器相當(dāng)于一個(gè)簡(jiǎn)易的
Linux
系統(tǒng); - 通過(guò)鏡像來(lái)創(chuàng)建容器,在容器中可獨(dú)立運(yùn)行一個(gè)/一組應(yīng)用;
- 基本命令:?jiǎn)?dòng)/停止/刪除…
倉(cāng)庫(kù)repository
- 倉(cāng)庫(kù)是存放鏡像的地方,分為公有倉(cāng)庫(kù)和私有倉(cāng)庫(kù);
- 默認(rèn)是國(guó)外的:
Docker Hub
; - 配置鏡像加速:阿里云容器服務(wù)。
總結(jié)
本文進(jìn)行了Docker
概述,介紹其歷史、優(yōu)勢(shì)、作用,以及基本組成。通過(guò)此,相信大家對(duì)Docker
有了一個(gè)初步的認(rèn)識(shí)。接下來(lái)就進(jìn)入Docker
的安裝和基本命令使用了。
一些參考資料
狂神說(shuō)系列Docker
教程:https://www.bilibili.com/video/BV1og4y1q7M4/
Docker
官網(wǎng):https://www.docker.com/
Docker
官方文檔:https://docs.docker.com/engine/install/centos/文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-848028.html
Docker
遠(yuǎn)程倉(cāng)庫(kù):https://hub.docker.com/文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-848028.html
到了這里,關(guān)于Docker學(xué)習(xí)筆記(一):入門(mén)篇,Docker概述、基本組成等,對(duì)Docker有一個(gè)初步的認(rèn)識(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!