Docker基礎入門 (一)—— 簡介

Docker —— 簡介

1. Doker是個什麼玩意

說Docker是什麼之前,先來看一看Docker爲什麼會出現。我們知道,在學習過程中我們需要頻繁地安裝配置一些軟件,不管是在Windows下還是在Linux,這些東西的配置過程都是非常費時費力的,稍有不慎就得刪了重來,換一臺機器,還得重來一次,更討厭的是經常出現一些環境的兼容性問題(比如一些軟件只兼容win7)。那麼有沒有這樣一種解決方式:軟件帶環境安裝,省去麻煩的安裝配置過程,並且完全不用考慮環境兼容問題,因爲自帶環境嘛。也就是說,安裝的時候,把原始環境一模一樣地複製過來(上面說了,有一些軟件不兼容win10,那我就在win7上裝好,將軟件和系統揉成一坨,拿到win10上使用)。

粗暴的總結成一句話:Docker就是這麼個玩意兒——應用程序+運行環境所構成的容器

2. Docker的踐行理念

通過上文,我們大致知道了這是個什麼東西,接下來我們看看Docker的設計理念。

Docker是基於Go語言實現的雲開源項目。

Docker的主要目標是“Build,Ship and Run Any App,Anywhere”,也就是通過對應用組件的封裝、分發、部署、運行等生命週期的管理,使用戶的APP(可以是一個WEB應用或數據庫應用等等)及其運行環境能夠做到“一次封裝,到處運行”。

Linux 容器技術的出現就解決了這樣一個問題,而 Docker 就是在它的基礎上發展過來的。開發人員利用 Docker 可以消除協作編碼時“在我的機器上可正常工作”的問題。依託Docker技術, 我們可以把應用程序和它所需要的系統環境,由下而上打包,達到應用程式跨平臺間的無縫接軌運作。 只需要一次配置好環境,換到別的平臺、環境上就可以一鍵部署好,極大地方便了應用部署運維 。

總的說來:大家知道java是一門跨平臺語言,一次編譯,到處“調試”;而Docker真的做到了,一次構建,到處運行!!

3. 淺談虛擬化技術

大佬說了一句話:

Docker是解決了運行環境和配置問題的軟件容器,方便做持續集成並有助於整體發佈的容器化虛擬技術。

這句話提到了虛擬化和容器化兩個技術名詞,接下來我們來簡單瞭解一下這兩個玩意兒。

3.1 之前的虛擬化技術:

大家肯定都接觸過的虛擬化技術——虛擬機(例如:vmware)。虛擬機就是一種帶環境安裝的解決方案,它可以在一種操作系統裏面運行另一種操作系統,比如說在Windows裏面運行Linux系統(Vmware虛擬出一套硬件平臺,Linux就是運行在這套平臺上的)。應用程序對此毫無感知,因爲虛擬機看上去跟真實系統一模一樣,而對於底層系統來說,虛擬機就是一個普通文件,不需要了就刪掉,對其他部分毫無影響。這類虛擬機完美的運行了另一套系統,能夠使應用程序,操作系統和硬件三者之間的邏輯不變。 簡單畫個圖感受一下:

注意:APP是運行一層虛擬化出來的硬件平臺上,這樣的虛擬機具有以下缺點:

  • 資源佔用多
  • 冗餘步驟多
  • 啓動慢

3.2 容器化虛擬化技術:

由於前面虛擬機存在這些缺點,Linux 發展出了另一種虛擬化技術:Linux 容器(Linux Containers,縮寫爲 LXC)。==Linux 容器不是模擬一個完整的操作系統,而是對進程進行隔離。==有了容器,就可以將軟件運行所需的所有資源打包到一個隔離的容器中。容器與虛擬機不同,不需要捆綁一整套操作系統,只需要軟件工作所需的庫資源和設置。系統因此而變得高效輕量並保證部署在任何環境中的軟件都能始終如一地運行。

比較了 Docker 和傳統虛擬化方式的不同之處:

  • 傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;

  • 而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更爲輕便。

  • 每個容器之間互相隔離,每個容器有自己的文件系統 ,容器之間進程不會相互影響,能區分計算資源。

3.3 對比傳統虛擬機總結

特性 容器 虛擬機
啓動 秒級 分鐘級
硬盤使用 一般爲 MB 一般爲 GB
性能 接近原生 弱於
系統支持量 單機支持上千個容器 一般幾十個

4.從DevOps的角度看Docker(選看)

4.1 更快的應用交付和部署:

傳統的應用開發完成後,需要提供一堆安裝程序和配置說明文檔,安裝部署後需根據配置文檔進行繁雜的配置才能正常運行。Docker化之後只需要交付少量容器鏡像文件,在正式生產環境加載鏡像並運行即可,應用安裝配置在鏡像裏已經內置好,大大節省部署配置和測試驗證時間。

4.2 更便捷的應用升級和擴縮容

隨着微服務架構和Docker的發展,大量的應用會通過微服務方式架構,應用的開發構建將變成搭樂高積木一樣,每個Docker容器將變成一塊“積木”,應用的升級將變得非常容易。當現有的容器不足以支撐業務處理時,可通過鏡像運行新的容器進行快速擴容,使應用系統的擴容從原先的天級變成分鐘級甚至秒級。

4.3 更簡單的系統運維

應用容器化運行後,生產環境運行的應用可與開發、測試環境的應用高度一致,容器會將應用程序相關的環境和狀態完全封裝起來,不會因爲底層基礎架構和操作系統的不一致性給應用帶來影響,產生新的BUG。當出現程序異常時,也可以通過測試環境的相同容器進行快速定位和修復。

4.4 更高效的利用系統資源

Docker是內核級虛擬化,直接運行在硬件平臺上,它不像傳統的虛擬化技術一樣需要額外Hypervisor支持,所以在一臺物理機上可以運行很多個容器實例,可大大提升物理服務器的CPU和內存的利率。

除此之外,還有更快速的啓動、保證一致的運行環境、持續交付和部署、更輕鬆的遷移。。。。

總而言之:Docker天下第一 ~

既然Docker這麼完美,那麼我們是不是對着它該來一發?下篇筆記記錄了怎麼擼它~

參考文章:

[1] 周陽.Docker基礎篇之快速上手

[2] 李衛民.Docker文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章