Docker是計算虛擬化的一種方式,和使用虛擬機進行虛擬化是類似的。由于近幾年Docker技術的流行和發展。所以單獨介紹一下Docker。首先先回答下面一個問題。
1.Docker會替代調虛機嗎?
答案:不會。
原因:是有些遺留應用是運行在windows系統上的。有些應用可以直接遷移到虛擬上,但是不能直接在容器中運行。現在得趨勢是虛擬機和容器同時發展。容器的優點是敏捷性和高性能。而虛擬機的優點是更強的隔離性和運維的簡單性。 Docker不但不會替代虛擬機,這兩種技術經常還結合起來應用。很多的公有云都是先使用虛擬機技術,然后在虛擬機上運行容器。
JTTI.CC
2.什么是Docker容器?
一句話描述容器: 容器是一個特殊的Linux進程。
只不過Docker對這個進程進行了特殊的隔離和限制,使得這個進程能夠實現"應用容器"的效果。應用容器要達到的效果就是 :
1:給應用的應用提供一個單獨的空間,其實就是一個單獨的進程;
2:容器之間互相不影響,資源隔離;
3:容器可以在任何環境上運行。
為了達到上述的效果,Docker對這個進程進行了如下3個方面進行了隔離和控制:
2.1 . 通過Namespace對進程進行隔離:
Namespace是Linux內核提供的一個隔離系統資源的方法,它實現的功能就是將Linux的資源以Namespace為單位進行隔離。
2.2 . 通過CGroup進行資源限制:
Namespace只是限制了進程對于OS的視圖,但是從OS的視角來看,這些被限制了的進程和普通的進程并沒有區別。不管進程是否被限制,他們使用的都是同一個宿主機的OS內核。容器進程雖然被隔離了,但是它仍然可以不受限制的任意使用宿主機OS的資源。這顯然不是一個“沙盒”應該表現出來的行為。所以必須對容器進程能夠使用的系統資源進行限制,這就是Linux Control Group機制(簡稱CGroup)。CGroup主要作用就是限制進程能夠使用的OS資源上限,比如CPU,內存,磁盤,網絡帶寬等。
2.3 . 通過容器鏡像(或者叫rootfs)為容器提供單獨的隔離的文件系統:
容器進程的目的是擁有自己的獨立的文件系統,自己的進程在運行的時候可以在這個獨立的文件系統中運行。這就需要用到上述的Mount Namespace,需要注意的是Mount Namespace對容器進程視圖的改變需要伴隨著掛在操作才能生效。所以說容器進程在啟動之前需要做的事情就是掛載一個完整的操作系統的目錄即可。而在Linux中正好有一個現成的命令chroot可以完成這個動作。
3.什么是容器鏡像?
正如上述所言,這個掛載在容器根目錄上的用來為容器進程提供隔離后執行環境的文件系統,就是所謂的“容器鏡像”。它還有一個更為專業的名字,叫作:rootfs(根文件系統)。用一句話說:容器鏡像就是一個文件系統。
審核編輯 黃宇
-
Docker
+關注
關注
0文章
458瀏覽量
11857
發布評論請先 登錄
相關推薦
評論