国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Docker 的前世今生

虛擬化

  要解釋清楚 Docker,首先要解釋清楚容器(Container)的概念。要解釋容器的話,就需要從操作系統(tǒng)說起。操作系統(tǒng)太底層,細說的話一兩本書都說不清楚。這里就一句話來總結一下:操作系統(tǒng)(Operating System,簡稱OS)是管理計算機硬件與軟件資源的計算機程序,并且為軟件運行提供通用服務的系統(tǒng)軟件。

  隨著硬件的性能提升,軟件種類的豐富,有兩種情況變得很常見:

  1. 硬件性能過剩——很多計算機的硬件配置,往往會有大量時間處于硬件資源閑置的狀態(tài)。例如一般家用電腦,已經是四核、六核的配置了,除了3A游戲、視頻制作、3D渲染、高性能計算等特殊應用外,通常有 90% 以上時間 CPU 是閑置的;
  2. 軟件沖突——因為業(yè)務需要,兩個或者多個軟件之間沖突,或者需要同一個軟件的不同版本。例如早幾年做 Web 前端的,要測試網頁在不同版本的 IE 上是否能正常顯示,然而 Windows 只能裝一個版本的 IE。

  為了解決軟件沖突,只能配置多臺計算機,或者很麻煩的在同一臺電腦上安裝多個操作系統(tǒng)。顯然這兩個方案都有其缺點:多臺計算機成本太高,多操作系統(tǒng)的安裝、切換都很麻煩。在硬件性能過剩的時候,硬件虛擬化的普及就很自然而然的提出來了。

  所謂硬件虛擬化,就是某個特殊的軟件,仿真出一臺或者多臺計算機的各種硬件,用戶可以在這一臺虛擬機上安裝、運行操作系統(tǒng)(一般叫來賓操作系統(tǒng),Guest OS)和各種應用,并且把 Guest OS 和上面應用軟件對硬件資源的訪問轉發(fā)到底層的硬件上來實現(xiàn)。

  對于 Guest OS 和上面的應用程序來說,這臺虛擬機和普通物理計算機是完全一樣沒有任何區(qū)別的——除了性能可能差一點。全球第一人氣的 VMware Workstation 就是這么一個軟件,Oracle 的 VirtualBox 以及 Microsoft 的 Virtual PC 都是。這類軟件英語有一個專用的單詞是 Hypervisor(虛擬機管理程序)。

虛擬機的優(yōu)點

  可以把資源分配到不同的虛擬機,達到硬件資源的最大化利用;

  相比直接在物理機上部署應用,虛擬機更容易擴展應用;

  云服務:通過虛擬機虛擬出不同的物理資源,可以快速搭建云服務。

虛擬化技術主要用來解決高性能的物理硬件產能過剩和老舊的硬件硬件產品產能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件。

虛擬機的缺點

  虛擬機的缺點在于 Guest OS 通常會占用不少硬件資源。例如 Windows 安裝 VMware 并開機 Guest OS,不運行任何應用的情況下,就需要占用 2 ~ 3G 內存,20 ~ 30G 硬盤空間。而且為了應用系統(tǒng)運行的性能,往往還要給每臺虛擬機留出更多的內存容量。雖然不少 Hypervisor 支持動態(tài)內存,但基本上都會降低虛擬機的性能。在這樣的資源占用情況下,少量的虛擬機還是可以接受的,如果同時運行十多臺或數(shù)十臺虛擬機,硬件資源的浪費就會成倍遞增。通常來說,其中相當大一部分甚至全部 Guest OS 都是相同的。

  能不能所有應用使用同一個操作系統(tǒng)減少硬件資源的浪費,但是又能避免包括運行庫在內的軟件沖突呢?操作系統(tǒng)層虛擬化——容器概念的提出,就是為了解決這個問題。Docker 就是一個容器的標準化實現(xiàn)。

容器化

  容器技術已經發(fā)展了很長一段時間了,例如:LXC,BSD Jails,Solaris Zones...

  容器化就是應用程序級別的虛擬化技術。容器提供了將應用程序的代碼、運行時、系統(tǒng)工具、系統(tǒng)庫和配置打包到一個實例中的標準方法。容器共享一個內核(操作系統(tǒng)),它安裝在硬件上。

  和虛擬機相比,容器有以下優(yōu)點:

  1. 啟動迅速:沒有虛擬機硬件的初始化,沒有 Guest OS 的啟動過程,可以節(jié)約很多啟動時間,這就是容器的“開箱即用”;
  2. 占用資源少:沒有運行 Guest OS 所需的內存開銷,無需為虛擬機預留運行內存,無需安裝、運行 App 不需要的運行庫/操作系統(tǒng)服務,內存占用、存儲空間占用都小的多。相同配置的服務器,如果運行虛擬機能運行十多臺的,通常可以運行上百個容器毫無壓力——當然前提是單個容器應用本身不會消耗太多資源。

Docker 歷史

  2010 年,幾個搞 IT 的年輕人,在美國舊金山成立了一家名叫 dotCloud 的公司。dotCloud 的平臺即服務(Platform-as-a-Service, PaaS)提供商。底層技術上,dotCloud 平臺利用了 Linux 的 LXC 容器技術。

  為了方便創(chuàng)建和管理這些容器,dotCloud 基于 Google 公司推出的 Go 語言開發(fā)了一套內部工具,之后被命名為 Docker。Docker 就是這樣誕生的。

  LXC 是 Docker 的底層基石,但是在 Docker 0.9 版本的時候,Docker 見異思遷了,引入了基于 Go 語言構建的 Libcontainer 的 execution driver。有了 Libcontainer 這個項目,Docker 不再需要依賴于 Linux 部件(LXC,libvirt,systemd-nspawn...)就可以處理 namespaces、control groups、capabilities、apparmor profiles、network interfaces。這下,LXC 淪為可選項。

  在 Docker 1.8 中 LXC 被 deprecated,在 Docker 1.10,LXC 徹底出局。Docker 推出 Libcontainer 自己集成了 Linux 內核中的很多特性,作為一個獨特、穩(wěn)定且不受制于 Linux 的 Library,獨立的時代終于到來了。

  如同 Docker 的 Logo 一樣,Docker 的思想來源于集裝箱。集裝箱解決了什么問題?在一艘大船上,可以把貨物規(guī)整的擺放起來,并且各種各樣的貨物被集裝箱標準化,集裝箱與集裝箱之間互不影響。那么就不需要專門運送水果的船和專門運送化學用品的船了。只要這些貨物封裝在不同的集裝箱里,就可以用一艘大船把它們都運走。

  Docker 技術誕生之后,并沒有引起行業(yè)的關注。而 dotCloud 公司,作為一家小型創(chuàng)業(yè)企業(yè),在激烈的競爭之下,也步履維艱。

  正當他們快要堅持不下去的時候,腦子里蹦出了“開源”的想法。什么是“開源”?開源,就是開放源代碼。也就是將原來內部保密的程序源代碼開放給所有人,然后讓大家一起參與進來,貢獻代碼和意見。

  有的軟件一開始就是開源的。也有的軟件,是混不下去,創(chuàng)造者又不想放棄,所以選擇開源。自己養(yǎng)不活,就吃“百家飯”嘛。2013 年 3 月,dotCloud 公司的創(chuàng)始人之一,Docker 之父,28 歲的 Solomon?Hykes 正式決定,將 Docker 項目開源。

  不開則已,一開驚人。越來越多的 IT 工程師發(fā)現(xiàn)了 Docker 的優(yōu)點,然后蜂擁而至,加入 Docker 開源社區(qū)。Docker 的人氣迅速攀升,速度之快,令人瞠目結舌。

  開源當月, Docker 0.1 版本發(fā)布。此后的每一個月, Docker 都會發(fā)布一個版本。到 2014 年 6 月 9 日, Docker 1.0 版本正式發(fā)布。

  此時的 Docker,已經成為行業(yè)里人氣最火爆的開源技術,沒有之一。甚至像 Google、微軟、Amazon、 VMware 這樣的巨頭們都對它青睞有加,表示將全力支持。

  Docker 火了之后, dotCloud 公司干脆把公司名字也改成了 Docker Inc. 。

為什么選擇 Docker

更高效的利用系統(tǒng)資源

  由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,Docker 對系統(tǒng)資源的利用率更高。無論是應用執(zhí)行速度、內存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數(shù)量的應用。

更快速的啟動時間

  傳統(tǒng)的虛擬機技術啟動應用服務往往需要數(shù)分鐘,而 Docker 容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統(tǒng),因此可以做到秒級、甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)、測試、部署的時間。

一致的運行環(huán)境

  開發(fā)過程中一個常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境、測試環(huán)境、生產環(huán)境不一致,導致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)。而 Docker 的鏡像提供了除內核外完整的運行時環(huán)境,確保了應用運行環(huán)境一致性,從而不會再出現(xiàn)「這段代碼在我機器上沒問題啊」 這類問題。

持續(xù)交付和部署

  對開發(fā)和運維(DevOps)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行。

  使用 Docker 可以通過定制應用鏡像來實現(xiàn)持續(xù)集成、持續(xù)交付、部署。開發(fā)人員可以通過 Dockerfile 來進行鏡像構建,并結合持續(xù)集成(Continuous Integration)系統(tǒng)進行集成測試,而運維人員則可以直接在生產環(huán)境中快速部署該鏡像,甚至結合持續(xù)部署(Continuous Delivery/Deployment)系統(tǒng)進行自動部署。

  而且使用 Dockerfile 使鏡像構建透明化,不僅僅開發(fā)團隊可以理解應用運行環(huán)境,也方便運維團隊理解應用運行所需條件,幫助更好的在生產環(huán)境中部署該鏡像。

更輕松的遷移

  由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環(huán)境的變化導致應用無法正常運行的情況。

更輕松的維護和擴展

  Docker 使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質量的 官方鏡像,既可以直接在生產環(huán)境使用,又可以作為基礎進一步定制,大大的降低了應用服務的鏡像制作成本。

容器與虛擬機的比較

  下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處,可見容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復用本地主機的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實現(xiàn)。

  與傳統(tǒng)的虛擬機相比,Docker 優(yōu)勢體現(xiàn)為啟動速度快、占用體積小。

至此 Docker 概念性相關內容就介紹到這里,下文我們聊聊 Docker 架構及其工作原理。

您的 點贊轉發(fā) 是對我最大的支持。

關注 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕松噢 ~

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
docker,你真的搞明白了嗎?
揭開容器的神秘面紗:幫助初學者深入了解容器技術
Docker到底是什么?為什么它這么火!
Docker使用手冊
OpenStack和Docker不能,Kubernetes和Mesos也不能,ServerLess能決定云計算勝負嗎?
先說Docker干啥用的。
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服