Docker學習筆記——Docker簡介

 

docker7640

  • 官方定義:Docker是一個能夠把開發的應用程序自動部署到容器的開源引擎。由 Docker Inc. 公司 前 dotC1oud公司, PaaS市場中的老牌提供商)的團隊編寫,基於 Apache 2.0開源授權協議發行。

  • 程序員能理解的定義:Docker是Docker Inc. 公司開源的一個基於Linux技術構建容器的容器引擎,其源代碼在GitHub上,基於Go語言開發並遵從Apache 2.0協議;

  • 普通人能理解的定義:“沒有集裝箱,就不會有全球化。”而Docker就是IT領域裏改變世界的“集裝箱”;

  • 圈裏人總結:Docker是一套以容器技術爲核心的IT標準化構建體系。它不僅僅是一項技術,更不僅僅是一家公司,Docker必將改變整個IT世界,讓“Build Ship Run”來的更猛烈些吧!

Docker優勢 – 更輕量、更快速、更便捷

  • 對開發人員來說:Docker提供了簡單快速的隔離環境,無需再爲配置環境操心,讓程序跑到哪都一樣;

  • 對運維人員來說:Docker可以快速構建出一整套無狀態分佈式基礎設施,使得運維工作可以通過程序化的腳本來完成;

  • 對業務人員來說:從每月或每週才能發佈的新版本到只需1小時就能發佈完畢,迅速滿足用戶新需求;

  • 標準化應用發佈:Docker容器包含了運行環境和可執行程序,可以跨平臺和主機使用;

  • 節約時間:快速部署和啓動,VM啓動一般是分鐘級,Docker容器啓動是秒級;

  • 方便構建基於SOA架構或微服務架構的系統,通過服務編排,更好的鬆耦合;

  • 節約成本:以前一個虛擬機至少需要幾個G的磁盤空間,Docker容器可以減少到MB級;

  • 方便持續集成:通過與代碼進行關聯使持續集成非常方便;

  • 可以作爲集羣系統的輕量主機或節點:在IaaS平臺上,已經出現了CaaS,通過容器替代原來的主機。

如何學習Docker

  1. 學習Docker,如果沒有云計算的基本知識,以及內核的基本知識,那麼學習並理解起來會稍吃力。作爲容器,Docker容器的優勢在哪,不足在哪,最好了解容器的實現是怎樣的(簡單瞭解);擁有鏡像管理,Docker又該如何體現軟件開發,集成,部署,發佈,再迭代的軟件生命週期管理優勢。

  2. 關於學習資源,起碼的硬件設施總是要有的。Docker及其生態的發展很快,不使用純理論肯定收效甚微。另外,資源還包括Docker官方,各大電子媒體平臺,技術論壇,開源社區等,往往大牛的觀點能點破自己的困惑,或者讓自己知道哪方面的認識還很欠缺,以及讓自己少走很多的彎路。

  3. 個人興趣的話,歸結爲強扭的瓜不甜。起碼應該認同Docker的設計價值,以及Docker的未來潛力,當然有依據的批判Docker並帶動大家的思考,也是深切關注的表現。

  4. 個人發展方向,個人認爲如果需要把Docker當作軟件生命週期管理工具的話,那用好Docker最爲重要,API及命令的理解與使用是必需的。如果專注系統設計方面,那麼除Docker以上的知識與經驗之外,若有Docker源碼的學習與理解,那麼這些肯定會讓你的Docker水平提高一個層次。

  5. 閱讀推薦:Docker命令指令詳情

總結起來學習Docker需要了解以下相關知識點:

  • Linux 系統管理(軟件包管理,用戶管理,進程管理等)

  • Linux 內核相關(Cgroup, namespace 等)

  • Linux 文件系統和存儲相關(AUFS,BRFS,devicemapper 等)

  • Linux 網絡(網橋,veth,iptables等)

  • Linux安全相關(Appmor,Selinux 等)

  • Linux進程管理(Supervisord,Systemd etc)

  • Linux容器技術(LXC等)

  • 開發語言(Python, GO,Shell 等)

Docker不是什麼

Docker在解決問題上廣度是其他工具無法比擬的,但是在深度方面Docker缺乏在某些特定類型上的深度。例如,一些組織發現當他們轉移到Docker上時可以完全的移除配置管理工具,但是Docker真正厲害之處是它能代替某些方面的傳統工具,它也可以兼容這些工具甚至結合以使其增強。接下倆我們介紹一些類型的工具,Docker不直接替換而是與其結合來獲得更好的結果:

  • 企業虛擬平臺(VMware、KVM等)
    按傳統概念來看容器並不是虛擬機,虛擬機包含一個完整的操作系統運行在宿主機操作系統之上。最大的優點是可以輕鬆的在一個宿主機上跑很多的配有不同操作系統的虛擬機。結合容器,宿主機和容器共享相同的內核。這就意味着容器很少利用系統資源,但是一定要基於同一個底層的操作系統(例如都是Linux)。

  • 雲平臺(Openstack、CloudStack等)
    像企業虛擬化,容器工作流和雲平臺存在很多相似之處。兩者在傳統上都運行應用根據需求進行水平縮放。但是Docker並不是雲平臺,它僅僅是掌管配置,運行,和管理容器在原來存在的Docker主機上。它並不允許創建新的宿主系統(實例),對象存儲,塊存儲,以及很多很雲平臺相聯繫的資源。

  • 配置管理(Puppet、Chef等)
    雖然Docker可以顯著提高組織管理應用和應用依賴的能力,但是它並不能直接替代傳統的配置管理。Dockerfiles用來定義一個容器在構建時的狀態,但是並不能管理容器正在進行的狀態,也不能用來管理Docker的主機系統。

  • 部署框架(Capistrano、Fabric等)
    Docker創建一個獨立封裝了應用所需的依賴的容器鏡像,而且可以部署到任何環境中不需要做任何改變,使得Docker在部署發方面比較方便。然後Docker不能單獨用作自動化部署複雜進程。其它的一些工具也是需要結合起來使得工作流自動化更加的健全。

  • 工作負載管理工具(Mesos、Fleet等)
    Docker服務器沒有集羣的內部概念。需要附加的編排工具來智能的協調Docker主機池工作,跟蹤所有主機及其資源的當前狀態,並保存當前容器運行情況清單。

  • 開發環境(Vagrant等)
    Vagrant是一個虛擬機管理工具,開發者可以用來模擬服務器棧,類似應用註定被部署的生產環境。另外Vagrant可以很容易的在Mac OS X和基於Windows的工作站上運行Linux軟件。由於Docker服務器只能運行在Linux上,Docker提供了一個叫做Boot2Docker的工具,來允許開發者在不同的平臺上快速的推行基於Linux的Docker機器,但是該工具並沒有提供出Docker和Vagarant在廣度方面的特性。

Docker有哪些主要的特性


/物理集裝箱Docker
無關內容集裝箱幾乎支持所有類型的貨物能壓縮任何負載和依賴
無關硬件標準化的尺寸和交接使得集裝箱可以通過貨船火車貨車運輸,用起重機交接不需要換一個容器或者打開集裝箱使用操作系統的基本體(像LXC)能一致的跑在幾乎任何硬件下,不需要對硬件做額外的修改
內容隔離和相互作用不需要關心鐵鍬會砸壞香蕉。集裝箱可以一起堆放一起運輸資源、網絡和內容的獨立避免了依賴問題
自動化標準化使得自動化裝載卸貨和移動變得方便使用標準的操作指令去跑start/stop/commit/search等等。對運營人員:CI、CD、自動化測試、hybrid clouds
高效不需要打開不需要改動什麼,高效的點對點的方式輕量級,幾乎沒有啓動的消耗,高效的移植性和操控性
職責分離發貨人只需要關心箱子內部的事情,託運人只需要關心箱子外部的東西開發者只需要關心代碼層面,運營人員只需要關心服務器的基礎環境


作爲一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有衆多的優勢。
      首先,Docker 容器的啓動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啓動 10 個隔離的應用即可。具體說來,Docker 在如下幾個方面具有較大的優勢。

一、快速交付應用程序

開發者使用一個標準的image來構建開發容器,開發完成之後,系統管理員就可以使用這個容器來部署代碼,docker可以快速創建容器,快速迭代應用程序,並讓整個過程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。docker容器很輕!很快!容器的啓動時間是次秒級的,節約開發、測試、部署的時間

二、更高效的虛擬化

Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。

三、更輕鬆的遷移和擴展

Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。

四、快速部署也意味着更簡單的管理

通常只需要小小的改變就可以替代以往巨型和大量的更新工作。

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。

五、對比傳統虛擬機總結

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


   轉載地址:http://www.dockerinfo.net/203.html

   

   

 知行辦公,專業移動辦公平臺
【總監】十二春秋之,[email protected]
【Master】zelo,[email protected]
【運營】運維艄公[email protected]
【產品設計】流浪貓,[email protected]
【體驗設計】兜兜,[email protected]
【iOS】淘碼小工,[email protected];iMcG33K,[email protected]
【Android】人猿居士,[email protected];思路的頓悟,[email protected]
【java】首席工程師MR_W,[email protected]
【測試】土鏡問道,[email protected]
【數據】喜樂多,[email protected]
【安全】保密,你懂的。

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