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

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 學習網站

①、官網(永遠的神)

//www.docker.com/

②、官方文檔

//docs.docker.com/

③、倉庫地址

//hub.docker.com