久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Docker的發(fā)展歷程詳述

        Docker 和容器技術(shù)的發(fā)展可謂是日新月異,本文試圖以全局的視角來(lái)梳理一下 docker 目前的生態(tài)圈。既然是概覽,所以不會(huì)涉及具體的技術(shù)細(xì)節(jié)。

        Docker 自從發(fā)布以來(lái)發(fā)生了很多的變化,并且有些方面的變化還非常大。對(duì)于技術(shù)愛(ài)好者來(lái)說(shuō),我們喜歡酷斃新的功能,喜歡舊功能的改善。但對(duì)于生產(chǎn)環(huán)境中的使用者來(lái)說(shuō),其實(shí)不太喜歡這種頻繁的變化!不管怎樣,我們都有必要理清 docker 生態(tài)系統(tǒng)中的眾多概念及它們之間的關(guān)系,以及 docker 自誕生至今(2018 年)的里程碑性事件。

      一、百花齊放的容器技術(shù)

        雖然 docker 把容器技術(shù)推向了巔峰,但容器技術(shù)卻不是從 docker 誕生的。實(shí)際上,容器技術(shù)連新技術(shù)都算不上,因?yàn)樗恼Q生和使用確實(shí)有些年頭了。下面的一串名稱肯能有的你都沒(méi)有聽(tīng)說(shuō)過(guò),但它們的確都是容器技術(shù)的應(yīng)用:

      • Chroot Jail
      • FreeBSD Jails
      • Linux VServer
      • Solaris Containers
      • OpenVZ
      • Process Containers
      • LXC
      • Warden
      • LMCTFY
      • Docker
      • RKT

      1、Chroot Jail
      就是我們常見(jiàn)的 chroot 命令的用法。它在 1979 年的時(shí)候就出現(xiàn)了,被認(rèn)為是最早的容器化技術(shù)之一。它可以把一個(gè)進(jìn)程的文件系統(tǒng)隔離起來(lái)。

      2、The FreeBSD Jail
      Freebsd Jail 實(shí)現(xiàn)了操作系統(tǒng)級(jí)別的虛擬化,它是操作系統(tǒng)級(jí)別虛擬化技術(shù)的先驅(qū)之一。

      3、Linux VServer
      使用添加到 Linux 內(nèi)核的系統(tǒng)級(jí)別的虛擬化功能實(shí)現(xiàn)的專(zhuān)用虛擬服務(wù)器。

      4、Solaris Containers
      它也是操作系統(tǒng)級(jí)別的虛擬化技術(shù),專(zhuān)為 X86 和 SPARC 系統(tǒng)設(shè)計(jì)。Solaris 容器是系統(tǒng)資源控制和通過(guò) “區(qū)域” 提供邊界隔離的組合。

      5、OpenVZ
      OpenVZ 是一種 Linux 中操作系統(tǒng)級(jí)別的虛擬化技術(shù)。 它允許創(chuàng)建多個(gè)安全隔離的 Linux 容器,即 VPS。

      6、Process Containers
      Process 容器由 Google 的工程師開(kāi)發(fā),一般被稱為 cgroups。

      7、LXC
      LXC 又叫 Linux 容器,這也是一種操作系統(tǒng)級(jí)別的虛擬化技術(shù),允許使用單個(gè) Linux 內(nèi)核在宿主機(jī)上運(yùn)行多個(gè)獨(dú)立的系統(tǒng)。

      8、Warden
      在最初階段,Warden 使用 LXC 作為容器運(yùn)行時(shí)。 如今已被 CloudFoundy 取代。

      9、LMCTFY
      LMCTY 是 Let me contain that for you 的縮寫(xiě)。它是 Google 的容器技術(shù)棧的開(kāi)源版本。
      Google 的工程師一直在與 docker 的 libertainer 團(tuán)隊(duì)合作,并將 libertainer 的核心概念進(jìn)行抽象并移植到此項(xiàng)目中。該項(xiàng)目的進(jìn)展不明,估計(jì)會(huì)被 libcontainer 取代。

      10、Docker

      Docker 是一個(gè)可以將應(yīng)用程序及其依賴打包到幾乎可以在任何服務(wù)器上運(yùn)行的容器的工具。

      11、RKT
      RKT 是 Rocket 的縮寫(xiě),它是一個(gè)專(zhuān)注于安全和開(kāi)放標(biāo)準(zhǔn)的應(yīng)用程序容器引擎。

      正如我們所看到的,docker 并不是第一個(gè)容器化技術(shù),但它的確是最知名的一個(gè)。Docker 誕生于 2013 年,并獲得了快速的發(fā)展,下圖展示了當(dāng)前 docker 平臺(tái)中的組成部分(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      Docker 立于系統(tǒng)基礎(chǔ)架構(gòu)之上并為應(yīng)用程序提供支撐。它由稱為 containerd 的行業(yè)標(biāo)準(zhǔn)容器運(yùn)行時(shí)組件,稱為 docker swarm 的本地編排工具,以及開(kāi)源的 docker community 版本和提供商業(yè)管理服務(wù)的 docker enterprise 版組成。

      二、與 docker 相關(guān)的重要概念

      1、Docker & LXC
      Docker 的第一個(gè)執(zhí)行環(huán)境是 LXC,但從版本 0.9 開(kāi)始 LXC 被 libcontainer 取代。

      2、Docker & libcontainer
      Libcontainer 為 docker 封裝了 Linux 提供的基礎(chǔ)功能,如 cgroups,namespaces,netlink 和 netfilter 等,如下圖所示(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      3、2015 – Docker & runC

      2015 年,docker 發(fā)布了 runC,一個(gè)輕量級(jí)的跨平臺(tái)的容器運(yùn)行時(shí)。 這基本上就是一個(gè)命令行小工具,可以直接利用 libcontainer 運(yùn)行容器,而無(wú)需通過(guò) docker engine。runC 的目標(biāo)是使標(biāo)準(zhǔn)容器在任何地方都可用。

      4、Docker & The Open Containers Initiative(OCI)
      OCI 是一個(gè)輕量級(jí)的開(kāi)放式管理架構(gòu),由 docker,CoreOS 和容器行業(yè)的其他領(lǐng)導(dǎo)廠商于 2015 年建立。它維護(hù)一些項(xiàng)目,如 runC ,還有容器運(yùn)行時(shí)規(guī)范和鏡像規(guī)范。OCI 的目的是圍繞容器行業(yè)制定標(biāo)準(zhǔn),比如使用 docker 創(chuàng)建的容器可以在任何其他容器引擎上運(yùn)行。

      5、2016 – Docker & containerd

      2016年,Docker 分拆了 containerd,并將其捐贈(zèng)給了社區(qū)。將這個(gè)組件分解為一個(gè)單獨(dú)的項(xiàng)目,使得 docker 將容器的管理功能移出 docker 的核心引擎并移入一個(gè)單獨(dú)的守護(hù)進(jìn)程(即 containerd)。

      6、Docker Components
      分拆完 containerd 后,docker 各組件的關(guān)系如下圖所示(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      至此,docker 從一個(gè)單一的軟件演變成了一套相互獨(dú)立的組件和項(xiàng)目。

      7、Docker 如何運(yùn)行一個(gè)容器?

      1. Docker 引擎創(chuàng)建容器映像
      2. 將容器映像傳遞給 containerd
      3. containerd 調(diào)用 containerd-shim
      4. containerd-shim 使用 runC 來(lái)運(yùn)行容器
      5. containerd-shim 允許運(yùn)行時(shí)(本例中為 runC)在啟動(dòng)容器后退出

      該模型帶來(lái)的最大好處是在升級(jí) docker 引擎時(shí)不會(huì)中斷容器的運(yùn)行。

      8、2017 – 容器成為主流

      2017 年是容器成為主流技術(shù)的一年,這就是為什么 docker 在 Linux 之外支持眾多平臺(tái)的原因(Docker for Mac,Docker for Windows,Docker for AWS,GCP 等)。

      當(dāng)容器技術(shù)被大眾接受后,Docker 公司意識(shí)到需要新的生產(chǎn)模型,這就是為什么它開(kāi)始 Moby 項(xiàng)目。

      三、Moby Project

        Moby 項(xiàng)目開(kāi)啟了實(shí)現(xiàn)協(xié)作和生產(chǎn)的新篇章。它是一個(gè)開(kāi)源項(xiàng)目,旨在推進(jìn)軟件的容器化。Moby 項(xiàng)目提供了數(shù)十個(gè)樂(lè)高積木一樣的組件以及將它們組裝成定制的基于容器的系統(tǒng)的框架。

      1、docker的生成模型

      (1)Docker 生產(chǎn)模型像任何其他常見(jiàn)的單個(gè)開(kāi)源項(xiàng)目一樣開(kāi)始(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      (2)進(jìn)而將單個(gè)項(xiàng)目拆分為不同的開(kāi)放組件(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      (3)然后進(jìn)化到可以共享這些組件以及組件集合(assembly)的模型(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      (4)最終達(dá)到能夠提供更多關(guān)于組件和通用組件集合的協(xié)作的模型(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      2、下面我們就來(lái)介紹一些 Moby 項(xiàng)目中的組件

      (1)Containerd
      Containerd 是 docker 基于行業(yè)標(biāo)準(zhǔn)創(chuàng)建的核心容器運(yùn)行時(shí)。它可以用作 Linux 和 Windows 的守護(hù)進(jìn)程,并管理整個(gè)容器生命周期。

      (2)Linuxkit
      Linuxkit 是 Moby 項(xiàng)目中的另一個(gè)組件,它是為容器構(gòu)建安全、跨平臺(tái)、精簡(jiǎn)系統(tǒng)的工具。目前已經(jīng)支持的本地 hypervisor 有 hyper-v 和 vmware。支持的云平臺(tái)有 AWS、Azure 等。

      (3)Infrakit
      Infrakit 也是 Moby 項(xiàng)目的一部分。它是創(chuàng)建和管理聲明式、不可變和自我修復(fù)基礎(chǔ)架構(gòu)的工具包。
      Infrakit 旨在自動(dòng)化基礎(chǔ)架構(gòu)的設(shè)置和管理,以支持分布式系統(tǒng)和更高級(jí)別的容器編排系統(tǒng)。Infrakit 對(duì)于像 Docker Swarm 和 Kubernetes 這樣的編排工具或跨越 AWS 等公共云創(chuàng)建自動(dòng)縮放群集的用例很有用。

      (4)Libnetwork
      Libnetwork 是用 Go 語(yǔ)言實(shí)現(xiàn)的容器網(wǎng)絡(luò)管理項(xiàng)目。它的目標(biāo)是定義一個(gè)容器網(wǎng)絡(luò)模型(CNM),
      并為應(yīng)用程序提供一致的編程接口以及網(wǎng)絡(luò)抽象。這樣就可以滿足容器網(wǎng)絡(luò)的 “可組合” 需求。

      (5)Docker & Docker Swarm
      Docker Swarm 是一個(gè)在 docker 引擎中構(gòu)建的編排工具。從 docker 1.12 開(kāi)始它就作為一個(gè)獨(dú)立的工具被原生包含在 docker engine 中。我們可以使用 docker cli 通過(guò) docker swarm 創(chuàng)建群集,并部署和管理應(yīng)用程序和服務(wù)。下圖描述了 docker swarm 在 docker 體系中的作用(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      (6)Docker&Kubernetes
      在 docker swarm 與 kubernetes 的競(jìng)爭(zhēng)中,顯然是 kubernetes 占據(jù)了優(yōu)勢(shì)。所以 docker 緊急掉頭,開(kāi)始原生的支持與 kubernetes 的集成。這可是 2017 年容器界的一大新聞啊!至此,docker 用戶和開(kāi)發(fā)人員可以自由地選擇使用 kubernetes 或是 swarm 執(zhí)行容器的編排工作。我們可以認(rèn)為 docker 與 kubernetes 聯(lián)姻了(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      新的支持 kubernetes 集成的 docker 版本將允許用戶把他們的 docker compose 應(yīng)用程序部署為 kubernetes 本地 pod 和服務(wù)。Kubernetes 是一款非常強(qiáng)大且逐漸被大眾認(rèn)可的本地編排工具(此圖來(lái)自互聯(lián)網(wǎng)):

      Docker的發(fā)展歷程詳述

      希望大家沒(méi)有被文中眾多的名稱和概念搞糊涂,讓我們以下圖來(lái)結(jié)束本文,它展示了從 2013 年到 2017 年從 docker hub 拉取鏡像次數(shù)的趨勢(shì):

      Docker的發(fā)展歷程詳述

      更多Docker相關(guān)教程見(jiàn)以下內(nèi)容: 

      Linux 下的 Docker 安裝與使用  http://www.sfodin.cn/Linux/2018-06/152996.htm
      CentOS 7安裝Docker應(yīng)用容器引擎 http://www.sfodin.cn/Linux/2018-06/152856.htm
      CentOS 7.3環(huán)境???裝Docker 18.03 http://www.sfodin.cn/Linux/2018-05/152356.htm
      使用Docker分分鐘啟動(dòng)常用應(yīng)用  http://www.sfodin.cn/Linux/2017-04/142649.htm
      CentOS 7使用Docker搭建GitLab服務(wù)器  http://www.sfodin.cn/Linux/2018-04/151725.htm
      30分鐘帶你了解Docker  http://www.sfodin.cn/Linux/2018-08/153346.htm

      Docker容器常見(jiàn)操作詳解  http://www.sfodin.cn/Linux/2018-08/153685.htm

      Docker發(fā)布應(yīng)用程序指南 http://www.sfodin.cn/Linux/2018-08/153405.htm

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)