Docker從入門到精通(一)——初識

YSOcean發表於2021-12-10

img

1、Docker 是什麼?

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

2、Docker 為什麼會出現?

①、一次構建,到處執行

一個專案,從開發-上線,開發人員需要在本機進行開發,運維人員將打包的服務部署上線,涉及到作業系統變更,應用配置變更,很常見的一種情況是:

我本地執行的好好的,怎麼到你那就不行了呢?

進而衍生出:

專案可以帶環境安裝嗎?也就是部署的時候,可以把原始環境一起打包複製過來。

Docker 便能幹這個事,通過 Docker 打包映象釋出測試,提供了一個標準化的解決方案,再也不用擔心因為環境不一致而導致的服務部署問題。

②、更高效的計算資源利用

我們部署專案,發展歷程如下:

一、物理機時代

部署一個服務,會粗略估計服務所需要的機器效能,然後去採購對應的真實物理機器,然後在該機器上安裝服務需要的一些軟體,比如伺服器Tomcat,資料庫MySQL等等。

物理機時代還是有很多缺點的:

1、部署非常慢:採購機器,安裝系統,安裝軟體等等;

2、成本高以及資源浪費:通常為了以防服務效能不夠,我們都會盡量採購比預期資源高一點的機器,不僅會增加成本,還會造成機器資源浪費;

3、難於擴充套件與遷移:由於是真實的物理機,擴充套件或者遷移會比較麻煩;

二、虛擬機器時代

VMware 相信大家都玩過,通過VMware 我們能在自己電腦上建立很多虛擬機器器,而物理機時代就是在一臺真實物理機上,虛擬出多臺機器,而且每臺機器都可以看做是一臺獨立的電腦。

相對於物理機時代,虛擬機器能夠在一臺機器上建立多臺機器,能夠充分利用資源,並且也做到了機器之間的隔離,機器效能不夠用了,也可以通過 Hypervisor 隨時進行擴充套件。

但是也有個缺點,我們每一臺虛擬機器都要獨立安裝作業系統,大家知道作業系統其實也是比較佔用效能的,有多少臺虛擬機器,我們就得多安裝多少個作業系統,這樣就浪費了很多資源,那麼怎麼解決呢?

三、容器化時代

容器類似於 VM,但是它們具有被放寬的隔離屬性,可以在應用程式之間共享作業系統(OS)。 因此,容器被認為是輕量級的。容器與 VM 類似,具有自己的檔案系統、CPU、記憶體、程式空間等。可以把容器看做是不用安裝作業系統的虛擬機器,容器化技術比虛擬機器更加靈活,更加小巧,更加極致的利用物理機資源。

3、Docker 的優點

①、部署快,開發測試更加敏捷

通過Docker 打包映象釋出測試,一鍵執行。

②、快速擴縮機器

由於Docker容器快速啟動特性,可以很快速的啟動幾十個、上百個容器來提供更多併發和資源利用率,並且這麼多容器也有比較成熟的解決方案來統一管理,比如K8S。

③、提高系統利用率,降低硬體成本

輕量級的虛擬機器,更省資源。

④、跨環境可移植

⑤、更好的支援微服務

微服務是近幾年來IT圈內談論比較多的一個名詞,意義也很簡單:儘可能細粒度拆分業務程式架構,由多個獨立服務組成業務系統。

而Docker的容器設計原則:一個容器一個服務,容器之間相互隔離,和微服務正好遙相呼應。

⑥、應用運維標準化,支援不同語言應用

⑦、避免雲廠商鎖定

4、Docker 學習網站

①、官網(永遠的神)

https://www.docker.com/

②、官方文件

https://docs.docker.com/

③、倉庫地址

https://hub.docker.com

相關文章