1. 程式人生 > 其它 >Docker入門-1 Docker是什麼?

Docker入門-1 Docker是什麼?

目錄

一.簡介

2013年釋出至今,Docker一直廣受矚目,被認為可能會改變軟體行業。

軟體開發最大的麻煩事之一,就是環境配置。舉例來說,你在windows10上安裝了一款遊戲,啟動發現缺少某某依賴包,好不容易安裝後,發現又報了另一種錯誤,不厭其煩。

即使是類似steam這種遊戲整合器,自動幫你裝了各種依賴,但依然有的電腦缺少一些基本要素,畢竟初始系統還是有點差別的,有的人安裝ghost系統,有的是純淨版系統。

二.虛擬機器

虛擬機器(virtual machine)就是帶環境安裝的一種解決方案。它可以在一種作業系統裡面執行另一種作業系統,比如在Windows系統裡面執行Linux系統。應用程式對此毫無感知,因為虛擬機器看上去跟真實系統一模一樣,而對於底層系統來說,虛擬機器就是一個普通檔案,不需要了就刪掉,對其他部分毫無影響。

雖然使用者可以通過虛擬機器還原軟體的原始環境,例如讓你安裝遊戲的時候下載一個虛擬機器,在虛擬機器裡進行玩耍,會確保環境一致。但是,這個方案有幾個缺點。

1.資源佔用多
虛擬機器會獨佔一部分記憶體和硬碟空間。它執行的時候,其他程式就不能使用這些資源了。哪怕虛擬機器裡面的應用程式,真正使用的記憶體只有1MB,虛擬機器依然需要幾百MB 的記憶體才能執行。

2.冗餘步驟多
虛擬機器是完整的作業系統,一些系統級別的操作步驟,往往無法跳過,比如使用者登入。

3.啟動慢
啟動作業系統需要多久,啟動虛擬機器就需要多久。可能要等幾分鐘,應用程式才能真正執行。

三.Linux 容器

由於虛擬機器存在這些缺點,Linux發展出了另一種虛擬化技術:Linux容器(Linux Containers,縮寫為 LXC)。

Linux容器不是模擬一個完整的作業系統,而是對程序進行隔離。或者說,在正常程序的外面套了一個保護層。對於容器裡面的程序來說,它接觸到的各種資源都是虛擬的,從而實現與底層系統的隔離。

由於容器是程序級別的,相比虛擬機器有很多優勢。
1.啟動快
容器裡面的應用,直接就是底層系統的一個程序,而不是虛擬機器內部的程序。所以,啟動容器相當於啟動本機的一個程序,而不是啟動一個作業系統,速度就快很多。

2.資源佔用少
容器只佔用需要的資源,不佔用那些沒有用到的資源;虛擬機器由於是完整的作業系統,不可避免要佔用所有資源。另外,多個容器可以共享資源,虛擬機器都是獨享資源。

3.體積小
容器只要包含用到的元件即可,而虛擬機器是整個作業系統的打包,所以容器檔案比虛擬機器檔案要小很多。

總之,容器有點像輕量級的虛擬機器,能夠提供虛擬化的環境,但是成本開銷小得多。

四.Docker是什麼?

Docker屬於Linux容器的一種封裝,提供簡單易用的容器使用介面。它是目前最流行的 Linux 容器解決方案。

Docker將應用程式與該程式的依賴,打包在一個檔案裡面。執行這個檔案,就會生成一個虛擬容器。程式在這個虛擬容器裡執行,就好像在真實的物理機上執行一樣。有了 Docker,就不用擔心環境問題。

總體來說,Docker的介面相當簡單,使用者可以方便地建立和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的程式碼一樣。

五.Docker的用途

Docker的主要用途,目前有三大類。
1.提供一次性的環境。比如,本地測試他人的軟體、持續整合的時候提供單元測試和構建的環境。

2.提供彈性的雲服務。因為Docker容器可以隨開隨關,很適合動態擴容和縮容。

3.組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。

六.Docker的組成

Docker的三大理念是:構建、運輸、執行

就像Docker的圖示一樣,它託著許多集裝箱。我們可以把宿主機可當做這隻鯨魚,把相互隔離的容器可看成集裝箱,每個集裝箱中都包含自己的應用程式。鯨魚或許代表著創始人Solomon Hykes眼中的網際網路願景,就像20世紀50年代集裝箱顛覆了全球物資運輸方式一樣,它將會顛覆資訊運輸方式,讓貨物在網際網路的火車、汽車、輪船之間暢通無阻。

Docker類似於cs結構,一個守護程序作為服務端,命令作為客戶端,使用者拿client方式來操作服務端。

七.Docker的元件

映象(Image)
類似於虛擬機器,作用和虛擬機器是一樣的,唯獨是組成部分會有些區別。簡單的說想啟動一個容器就必須要有映象

容器(Container)
docker是通過容器來執行業務的,就像執行一個kvm虛擬機器是一樣的。容器其實就是從映象建立的一個例項。 我們可以對容器進行增刪改查,容器之間也是相互隔離的。和虛擬機器最大的區別就是一個是虛擬的一個是隔離的。

倉庫(Repository)
如百度網盤一樣,我們需要一個倉庫來存放映象,Docker官方提供了公共的映象倉庫;從安全和效率的角度考慮我們也可以部署私有環境的Registry或者是Harbor。

八.Docker和虛擬化的區別

特性 容器 虛擬機器
啟動時間 秒級 分鐘級
硬碟使用(映象大小) 一般為MB 一般為GB
效能 接近原生 額外佔效能
系統支援量 單機支援上千個容器 一般幾十個

九.Docker的優缺點

優點:
啟動快
輕量,每個映象都非常小
輕隔離,每個容器都進行隔離,相互不影響

缺點:
容器的隔離性沒有虛擬化強
共用linux核心,安全性有先天缺陷
selinux難以駕馭
監控容器和容器排錯是個挑戰

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。