Docker是計算虛擬化的一種方式,和使用虛擬機進行虛擬化是類似的。由于近幾年Docker技術(shù)的流行和發(fā)展。所以單獨介紹一下Docker。首先先回答下面一個問題。
1.Docker會替代調(diào)虛機嗎?
答案:不會。
原因:是有些遺留應(yīng)用是運行在windows系統(tǒng)上的。有些應(yīng)用可以直接遷移到虛擬上,但是不能直接在容器中運行。現(xiàn)在得趨勢是虛擬機和容器同時發(fā)展。容器的優(yōu)點是敏捷性和高性能。而虛擬機的優(yōu)點是更強的隔離性和運維的簡單性。 Docker不但不會替代虛擬機,這兩種技術(shù)經(jīng)常還結(jié)合起來應(yīng)用。很多的公有云都是先使用虛擬機技術(shù),然后在虛擬機上運行容器。

JTTI.CC
2.什么是Docker容器?
一句話描述容器: 容器是一個特殊的Linux進程。
只不過Docker對這個進程進行了特殊的隔離和限制,使得這個進程能夠?qū)崿F(xiàn)"應(yīng)用容器"的效果。應(yīng)用容器要達到的效果就是 :
1:給應(yīng)用的應(yīng)用提供一個單獨的空間,其實就是一個單獨的進程;
2:容器之間互相不影響,資源隔離;
3:容器可以在任何環(huán)境上運行。
為了達到上述的效果,Docker對這個進程進行了如下3個方面進行了隔離和控制:
2.1 . 通過Namespace對進程進行隔離:
Namespace是Linux內(nèi)核提供的一個隔離系統(tǒng)資源的方法,它實現(xiàn)的功能就是將Linux的資源以Namespace為單位進行隔離。
2.2 . 通過CGroup進行資源限制:
Namespace只是限制了進程對于OS的視圖,但是從OS的視角來看,這些被限制了的進程和普通的進程并沒有區(qū)別。不管進程是否被限制,他們使用的都是同一個宿主機的OS內(nèi)核。容器進程雖然被隔離了,但是它仍然可以不受限制的任意使用宿主機OS的資源。這顯然不是一個“沙盒”應(yīng)該表現(xiàn)出來的行為。所以必須對容器進程能夠使用的系統(tǒng)資源進行限制,這就是Linux Control Group機制(簡稱CGroup)。CGroup主要作用就是限制進程能夠使用的OS資源上限,比如CPU,內(nèi)存,磁盤,網(wǎng)絡(luò)帶寬等。
2.3 . 通過容器鏡像(或者叫rootfs)為容器提供單獨的隔離的文件系統(tǒng):
容器進程的目的是擁有自己的獨立的文件系統(tǒng),自己的進程在運行的時候可以在這個獨立的文件系統(tǒng)中運行。這就需要用到上述的Mount Namespace,需要注意的是Mount Namespace對容器進程視圖的改變需要伴隨著掛在操作才能生效。所以說容器進程在啟動之前需要做的事情就是掛載一個完整的操作系統(tǒng)的目錄即可。而在Linux中正好有一個現(xiàn)成的命令chroot可以完成這個動作。
3.什么是容器鏡像?
正如上述所言,這個掛載在容器根目錄上的用來為容器進程提供隔離后執(zhí)行環(huán)境的文件系統(tǒng),就是所謂的“容器鏡像”。它還有一個更為專業(yè)的名字,叫作:rootfs(根文件系統(tǒng))。用一句話說:容器鏡像就是一個文件系統(tǒng)。
審核編輯 黃宇
-
Docker
+關(guān)注
關(guān)注
0文章
532瀏覽量
14242
發(fā)布評論請先 登錄
如何在2026年Rocky Linux(8、9和10)上安裝Docker
Jtti分析SSL證書安裝不成功是怎么回事?有哪些原因?
跨阻放大器的虛短虛斷如何分析以及電流的流向?
干貨分享 | RK3588 Ubuntu系統(tǒng)Docker容器使用指南
激光焊錫中虛焊產(chǎn)生的原因和解決方法
docker無法啟用怎么解決?
如何使用Docker部署大模型
什么是運放的虛短和虛斷
Docker Compose的常用命令
Docker常用命令大全
連接器焊接后引腳虛焊要怎么處理?
【技術(shù)案例】Android in Docker
TECS OpenStack資源池虛機寫磁盤時延高告警的問題處理
基于Docker鏡像逆向生成Dockerfile
Jtti:Docker會替代調(diào)虛機嗎
評論