Docker從入門到精通(一)——初識
- 2021 年 12 月 10 日
- 筆記
- docker, Docker從入門到精通
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 學習網站
①、官網(永遠的神)
②、官方文檔
③、倉庫地址