真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【docker】01、docker簡介

一、docker簡介

創(chuàng)新互聯(lián)建站10多年企業(yè)網(wǎng)站制作服務;為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及高端網(wǎng)站定制服務,企業(yè)網(wǎng)站制作及推廣,對成都辦公空間設計等多個方面擁有豐富的網(wǎng)站運維經(jīng)驗的網(wǎng)站建設公司。

Docker 官網(wǎng):http://www.docker.com

Github Docker 源碼:https://github.com/docker/docker

                                   https://github.com/moby/moby

1、docker是什么

  Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從Apache2.0協(xié)議開源。

Docker 可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

特性:一次封裝到處運行,很好的說明了Docker的跨平臺和強移植性。

  • Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內(nèi)部的一個業(yè)余項目。它基于 Google  公司推出的 Go 語言實現(xiàn)。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協(xié)議,項目代碼在 GitHub 上進行維護。

  • Docker基礎是Linux 容器(LXC)基礎,并對其進行了更高層面的封裝,使得用戶不需要去關(guān)心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。

  • Docker容器與傳統(tǒng)虛擬機不同,容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復用本地主機的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實現(xiàn)。參考如下對比圖:
    【docker】01、docker簡介
    【docker】01、docker簡介

二、為什么要用docker?

2.1 比虛擬機高效:

  • 如前描述,因容器復用了本地主機操作系統(tǒng),僅僅是封裝了容器運行所需的軟件環(huán)境(從這個角度看可以參考RPM安裝包),因此與主機上直接運行軟件所需的資源幾乎是一樣的。不像虛擬機那樣需要額外的內(nèi)存、CPU等來支持虛擬機操作系統(tǒng)的運行。

2.2 快速交付和部署:

  • 對開發(fā)和運維(devop)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行。而且可以保證每一個地方運行的環(huán)境都是一模一樣的,不會因為開發(fā)環(huán)境與生產(chǎn)環(huán)境不同而導致某些問題。

  • docker容器的啟動更是秒級的,因此可以隨時快速生產(chǎn)、關(guān)閉。

2.3 輕松遷移和擴展:

  • docker鏡像可以在任意環(huán)境中遷移,而不會出現(xiàn)兼容性問題,遷移過程輕松方便。

2.4 管理簡單:

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

2.5 docker對比傳統(tǒng)虛擬機

【docker】01、docker簡介

三、Docker架構(gòu)

1、Docker的組織架構(gòu)

Docker 使用客戶端-服務器 (C/S) 架構(gòu)模式,使用遠程API來管理和創(chuàng)建Docker容器。

Docker 容器通過 Docker 鏡像來創(chuàng)建。

容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶ο笈c類。

Docker面向?qū)ο?/th>
容器對象
鏡像

docker架構(gòu)如圖:

【docker】01、docker簡介

各組件介紹:

Docker 鏡像(Images)

Docker 鏡像是用于創(chuàng)建 Docker 容器的模板。

Docker 容器(Container)

容器是獨立運行的一個或一組應用。

Docker 客戶端(Client)

Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護進程通信。

Docker 主機(Host)

一個物理或者虛擬的機器用于執(zhí)行 Docker 守護進程和容器。

Docker 倉庫(Registry)

Docker 倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。

Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。

Docker Machine

Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

三、基本概念

Docker 包括三個基本概念

  • 鏡像(Image)

  • 容器(Container)

  • 倉庫(Repository)

理解了這三個概念,就理解了 Docker 的整個生命周期。

3.1 鏡像:

  • Docker 鏡像就是一個只讀的模板。
    例如:一個鏡像可以包含一個完整的 CentOS 操作系統(tǒng)環(huán)境,里面僅安裝了 httpd或用戶需要的其它應用程序。

  • 鏡像可以用來創(chuàng)建 Docker 容器。

  • Docker 提供了一個很簡單的機制來創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載一個已經(jīng)做好的鏡像來直接使用。

Docker 鏡像

     我們都知道,操作系統(tǒng)分為內(nèi)核和用戶空間。對于 Linux 而言,內(nèi)核啟動后,會掛載 root 文件系統(tǒng)為其提供用戶空間支持。而 Docker 鏡像(Image),就相當于是一個 root 文件系統(tǒng)。比如官方鏡像 ubuntu:14.04 就包含了完整的一套 Ubuntu 14.04 最小系統(tǒng)的 root 文件系統(tǒng)。

Docker 鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。

分層存儲

     因為鏡像包含操作系統(tǒng)完整的 root 文件系統(tǒng),其體積往往是龐大的,因此在 Docker 設計時,就充分利用 Union FS 的技術(shù),將其設計為分層存儲的架構(gòu)。所以嚴格來說,鏡像并非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現(xiàn)并非由一個文件組成,而是由一組文件系統(tǒng)組成,或者說,由多層文件系統(tǒng)聯(lián)合組成。

      鏡像構(gòu)建時,會一層層構(gòu)建,前一層是后一層的基礎。每一層構(gòu)建完就不會再發(fā)生改變,后一層上的任何改變只發(fā)生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。因此,在構(gòu)建鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構(gòu)建結(jié)束前清理掉。

分層存儲的特征還使得鏡像的復用、定制變的更為容易。甚至可以用之前構(gòu)建好的鏡像作為基礎層,然后進一步添加新的層,以定制自己所需的內(nèi)容,構(gòu)建新的鏡像。

關(guān)于鏡像構(gòu)建,將會在后續(xù)相關(guān)章節(jié)中做進一步的講解。

3.2 容器:

  • Docker 利用容器來運行應用。

  • 容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。

  • 可以把容器看做是一個簡易版的 Linux 環(huán)境(包括root用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡空間等)和運行在其中的應用程序。

  • *注:鏡像是只讀的,容器在啟動的時候創(chuàng)建一層可寫層作為最上層。

每一個鏡像都可能依賴于由一個或多個下層的組成的另一個鏡像。我們有時說,下層那個 鏡像是上層鏡像的父鏡像。

基礎鏡像

      一個沒有任何父鏡像的鏡像,謂之基礎鏡像。

鏡像ID

       所有鏡像都是通過一個 64 位十六進制字符串 (內(nèi)部是一個 256 bit 的值)來標識的。 為簡化使用,前 12 個字符可以組成一個短ID,可以在命令行中使用。短ID還是有一定的 碰撞機率,所以服務器總是返回長ID。

Docker 容器

      鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O計中的實例一樣,

鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。

      容器的實質(zhì)是進程,但與直接在宿主執(zhí)行的進程不同,容器進程運行于屬于自己的獨立的 命名空間。因此容器可以擁有自己的 root 文件系統(tǒng)、自己的網(wǎng)絡配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內(nèi)的進程是運行在一個隔離的環(huán)境里,使用起來,就好像是在一個獨立于宿主的系統(tǒng)下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。也因為這種隔離的特性,很多人初學 Docker 時常常會把容器和虛擬機搞混。

       前面講過鏡像使用的是分層存儲,容器也是如此。每一個容器運行時,是以鏡像為基礎層,在其上創(chuàng)建一個當前容器的存儲層,我們可以稱這個為容器運行時讀寫而準備的存儲層為容器存儲層。

容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存于容器存儲層的信息都會隨容器刪除而丟失。

      按照 Docker 最佳實踐的要求,容器不應該向其存儲層內(nèi)寫入任何數(shù)據(jù),容器存儲層要保持無狀態(tài)化。所有的文件寫入操作,都應該使用 數(shù)據(jù)卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網(wǎng)絡存儲)發(fā)生讀寫,其性能和穩(wěn)定性更高。

數(shù)據(jù)卷的生存周期獨立于容器,容器消亡,數(shù)據(jù)卷不會消亡。因此,使用數(shù)據(jù)卷后,容器可以隨意刪除、重新 run,數(shù)據(jù)卻不會丟失。

3.3 倉庫:

  • 倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,并不嚴格區(qū)分。實際上,倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。

  • 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

  • 最大的公開倉庫是 Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載。  其作為默認docker倉庫,但在國內(nèi)下載速度很慢。當然,用戶也可以在本地網(wǎng)絡內(nèi)創(chuàng)建一個私有倉庫。當用戶創(chuàng)建了自己的鏡像之后就可以使用 push  命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。

  • *注:Docker 倉庫的概念跟 Git 類似,注冊服務器可以理解為 GitHub 這樣的托管服務。

Docker Registry  倉庫注冊服務器

       鏡像構(gòu)建完成后,可以很容易的在當前宿主上運行,但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發(fā)鏡像的服務,Docker Registry 就是這樣的服務。

一個 Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。

       通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。

以 Ubuntu 鏡像 為例,ubuntu 是倉庫的名字,其內(nèi)包含有不同的版本標簽,如,14.04, 16.04。我們可以通過 ubuntu:14.04,或者 ubuntu:16.04 來具體指定所需哪個版本的鏡像。如果忽略了標簽,比如 ubuntu,那將視為 ubuntu:latest。

        倉庫名經(jīng)常以 兩段式路徑 形式出現(xiàn),比如 jwilder/nginx-proxy,前者往往意味著 Docker Registry 多用戶環(huán)境下的用戶名,后者則往往是對應的軟件名。但這并非絕對,取決于所使用的具體 Docker Registry 的軟件或服務。

Docker Registry 公開服務

      Docker Registry 公開服務是開放給用戶使用、允許用戶管理鏡像的 Registry 服務。一般這類公開服務允許用戶免費上傳、下載公開的鏡像,并可能提供收費服務供用戶管理私有鏡像。

最常使用的 Registry 公開服務是官方的 Docker Hub,這也是默認的 Registry,并擁有大量的高質(zhì)量的官方鏡像。除此以外,還有 CoreOS 的 Quay.io,CoreOS 相關(guān)的鏡像存儲在這里;Google 的 Google Container Registry,Kubernetes 的鏡像使用的就是這個服務。

由于某些原因,在國內(nèi)訪問這些服務可能會比較慢。國內(nèi)的一些云服務商提供了針對 Docker Hub 的鏡像服務(Registry Mirror),這些鏡像服務被稱為加速器。常見的有 阿里云加速器、DaoCloud 加速器、靈雀云加速器等。使用加速器會直接從國內(nèi)的地址下載 Docker Hub 的鏡像,比直接從官方網(wǎng)站下載速度會提高很多。在后面的章節(jié)中會有進一步如何配置加速器的講解。

國內(nèi)也有一些云服務商提供類似于 Docker Hub 的公開服務。比如 時速云鏡像倉庫、網(wǎng)易云鏡像服務、DaoCloud 鏡像市場、阿里云鏡像庫等。

私有 Docker Registry

       除了使用公開服務外,用戶還可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 鏡像,可以直接使用做為私有 Registry 服務。在后續(xù)的相關(guān)章節(jié)中,會有進一步的搭建私有 Registry 服務的講解。

開源的 Docker Registry 鏡像只提供了 Docker Registry API 的服務端實現(xiàn),足以支持 docker 命令,不影響使用。但不包含圖形界面,以及鏡像維護、用戶管理、訪問控制等高級功能。在官方的商業(yè)化版本 Docker Trusted Registry 中,提供了這些高級功能。

除了官方的 Docker Registry 外,還有第三方軟件實現(xiàn)了 Docker Registry API,甚至提供了用戶界面以及一些高級功能。比如,VMWare Harbor 和 Sonatype Nexus。


四、Docker變身Moby之謎

    本周,Docker突然變成了Moby,這次名稱的變更讓很多人感到一頭霧水。Docker(公司)決定將Docker(商業(yè)軟件產(chǎn)品)和Docker(開源項目)區(qū)分開來。在DockerCon大會上,該公司推出了Moby Project項目——它其實就是Docker開源項目的新名稱而已(相當于紅帽公司的Ferdora項目)。

     在DockerCon大會上,該公司推出了Moby Project項目——它其實就是Docker開源項目的新名稱而已。Moby還扮演了另一個角色:為具體的基礎設施創(chuàng)建個性化容器軟件。

但這冰凍三尺,又非一日之寒。

早在 Docker 項目剛受到廣泛關(guān)注不久,就已經(jīng)有很多意見指出 Docker 這個名字既是公司名字,又是開源項目的名字,而且很快又成了公司商業(yè)產(chǎn)品的名字,這本身就是很大的隱患。但 Docker 公司并沒有采取什么措施,反而更加關(guān)注和遏制任何第三方試圖濫用 Docker 關(guān)鍵字的苗頭。

Docker 公司有意無意之間制造的這個模糊地帶,在 Docker 項目高速發(fā)展的兩年里,將開源社區(qū)用心經(jīng)營出來的龐大受眾和用戶群體,同公司未來商業(yè)產(chǎn)品的影響力和目標客戶通過 “Docker” 關(guān)鍵字成功的統(tǒng)一起來。然后,在 “Docker 到 Moby” 這個原本可以用來修正這個錯誤的時間點上,Docker 公司又毫無征兆地、以迅雷不及掩耳之勢完成了 Docker 項目的重命名。至此,“社區(qū)再無 Docker”,就成了這個無比成功的項目最后的感慨。這也是 Github 上和 HN 上的開發(fā)者感覺被冒犯的主要原因。

    大多數(shù)容器用戶實際上并無需過分糾結(jié) Docker 或者 Moby。免費的 Docker-CE 會一直存在,Moby 開源社區(qū)依然會活躍,而且模塊化后,要 hack 還變?nèi)菀琢?,何樂而不為?/p>

一句話版本,后面的可以不看:
    Docker公司直接把原Docker項目改名成了Moby,是為了將之前數(shù)年里構(gòu)建出來的龐大的粉絲團體和Google搜索內(nèi)容(Google search footprint)全部轉(zhuǎn)移到Docker公司的商業(yè)產(chǎn)品上。

需要注意:
    Docker公司的商業(yè)產(chǎn)品包括了Docker EE和Docker CE,前者是企業(yè)收費版,后者是社區(qū)免費版。
也就是說,以后大家用的(包括大家現(xiàn)在機器里已經(jīng)安裝的)都是Docker公司的產(chǎn)品(注意,并不是項目),這個產(chǎn)品名叫Docker CE(命名方式如Docker 17.XX)。Docker公司也會不遺余力的鼓勵用戶在試用后購買付費版本(這很正常)。

二、關(guān)于Moby
   Moby會以一個開源組織(Github Org)的方式存在。
Docker CE這個產(chǎn)品,會由Moby組織下的Moby項目以及其他項目構(gòu)建和編譯出來的。
Moby組織下面的項目均由社區(qū)開發(fā)者共同維護。這也就意味著對于Moby社區(qū)的參與者來說,

你們今后的工作方式是:
   貢獻Moby下的項目,然后使用Docker公司的Docker CE產(chǎn)品。
你也應該明白了,并不會存在一個開源項目叫Docker CE。
因為Docker CE是一個產(chǎn)品,你一定得從Docker公司官網(wǎng)上來下載使用。

三、用戶到底在抱怨什么?
   拆分后的Moby項目們無論在Docker公司的投入上、新特性的開放程度上、還是開發(fā)者活躍程度上,都會受到不小的影響。

   實際上,如果是正常的技術(shù)公司的話,一般會選擇繼續(xù)維護自己的開源項目,然后在自己公司里賣一個企業(yè)版以及企業(yè)服務。
這種例子太多了,幾乎每個開源項目都是這個套路。
但是唯獨Docker公司,它直接把Docker開源項目改名了,或者說的更直白一點,給抹去了。從這天開始,你再也不可能找到一個叫Docker的開源項目。你從Google上搜到所有跟『Docker』相關(guān)的信息,都會指向Docker公司的那兩個產(chǎn)品。原先Docker項目龐大的粉絲群,直接變成了Docker公司的客戶。

這也是為什么所羅門一再解釋『原先的Docker用戶并不受影響』但是很多人并不買賬的原因。問題不在于什么項目要改名啦,依賴庫不能用啦這種小問題。關(guān)鍵問題在于,原Docker開源項目的用戶被實實在在地愚弄了一把。這是前所未有的(不知道過去20年里大家有沒有類似的例子)。

四、為什么這樣做?
   過去的20年里,成功的開源項目數(shù)不勝數(shù),但是這些項目背后成功的商業(yè)公司堪稱寥寥。要較真說案例,也就RedHat這種能夠
控制到操作系統(tǒng)層面的公司,才勉強算是個成功的例子。其他的項目,越往上層走,越難盈利(因為用戶越難留?。嶋H上,大多數(shù)開源項目的商業(yè)公司,能養(yǎng)活這個項目就已經(jīng)很不錯了,盈利簡直是天方夜譚。這也是為什么這么多年了,業(yè)內(nèi)還是沒事兒就討論一把『開源怎么掙錢』這個問題。一個字,難。

君不見,這個圈子里,無數(shù)來自伯克利、Google、手握著黑科技的開源公司都趴在地上起不來,Docker這個手里并不控制核心技術(shù)、靠著親人的UI/UX拿了天下的項目,盈利前景又如何呢?

Docker公司不可能看不到這個問題。別忘了它本身就是從一個PaaS公司(dotCloud)出來的,現(xiàn)在真沒什么心思考慮開源世界的理想抱負。他從Docker項目成功的第一天開始,就是奔著做下一個VMware去的。否則M$的40億美金收購,他根本沒理由拒絕掉。

我要賣產(chǎn)品,可是用戶在哪里?原Docker項目那4w多個star就跟我招手了。

真就這么急嗎?灣區(qū)這邊一直有傳言稱Docker公司的投資方定下了嚴苛的盈利標準,看來并不是天方夜譚。一個做純后端技術(shù)獨角獸,確實有為難的一面,誰讓咱的目標是NASDAQ上市呢。

五、關(guān)于Docker的未來
    毫無疑問,Docker公司的未來是光明的,一個新的VMware正呼之欲出。但重要的是,這個新VMware構(gòu)建在一種全新的、基于
開源的商業(yè)模式上,這其實正類似于新時代我們耳熟能詳?shù)模悍劢z經(jīng)濟。

有人問:這么一來開發(fā)者也不是被得罪了不少嗎?

傻孩子。真正愿意付錢給Docker公司的老板們,才沒工夫上HackerNews和Github呢!

『Docker?嗯,我聽說過,好像還挺火的。小劉,咱們也上一套吧!』

立志做VMware的Docker公司,并沒有功夫關(guān)心國內(nèi)賣『自研Docker企業(yè)版』的小伙伴們。什么『Docker原生』,你再原生還能原生的過Docker EE?更何況,價格還不一定誰便宜呢。當然,國內(nèi)有個信息閉塞的好處,大家還能拉著Docker公司的大旗,沾一下Docker龐大粉絲潮的光。

唯獨阿里云這個家伙、堂堂世界第三的云,竟然甘做Docker公司的代理人賣起了Docker EE?;钤撍贒ockerCon上的新聞被國內(nèi)的現(xiàn)場直播員們屏蔽(逃)。

只是,對于開源社區(qū)的參與者來說,就真剩下一片呵呵的表情了。Docker這么大的項目說沒就沒,無數(shù)人點上RIP真不為過。Moby社區(qū)的活躍度確實是個問號。


當前文章:【docker】01、docker簡介
網(wǎng)頁鏈接:http://weahome.cn/article/jhooij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部