<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ![](https://cdn.zimug.com/wx-zimug.png) [TOC] **Docker**是一個開源的容器引擎,它輕巧,且易移植,“build once, configure once and run anywhere”。使用go語言開發,并遵從apache2.0協議。 ## 一、 傳統軟件行業中存在的問題 * 開發、生產、測試環境不一致,開發環境下可用的服務挪到生產上不可用。 * 不同環境之間遷移成本太高,沒有統一的軟件部署封裝標準及封裝環境。 * 對于分布式軟件持續集成(測試、打包、發布、部署、管理)周期很長,難以自動化、工程化。 * 面臨瞬時用戶流量增大的場景,很難實現分布式應用服務實例的快速部署。 ![](http://cdn.zimug.com/95d5d891ed3a65511277abb4acc4a59b) ## 二、集裝箱與docker之間的關系 通常稱docker為軟件行業的集裝箱技術,那么docker和集裝箱有什么相似之處呢? | 傳統行業集裝箱 | 軟件行業Docker | | --- | --- | | 裝載實體貨物 | 裝載并運行應用服務 | | 具有統一的規格,便于搬運 | 封裝環境的統一性(JDK、環境變量都可以封裝在一個docker鏡像里面),可以遵從一定規則反復的、快速的自動化安裝部署 | | 環境隔離,每個公司的集裝箱貨物與其他的公司的貨物不混在一起。 | 在linux中采用namespace技術進行資源隔離,cgroups技術進行資源限制。容器之間互不影響。 | |資源共享,一個運送集裝箱的船舶,搭載多個集裝箱|一臺服務器可以啟動多個docker容器,達到共享服務器資源的目的| | 具備完整的物流倉儲系統 | docker鏡像倉庫中的鏡像,可以導出導入,上傳下載 | 可以參考我的另一篇文章[《【大話云原生】煮餃子與docker之間的關系》](https://zimug.blog.csdn.net/article/details/123321369),我覺得這篇文章對于您理解docker將有非常大的幫助。 ## 三、docker與虛擬機的區別 docker和虛擬機在某些應用場景下比較像,但是docker不是虛擬機。 ![](http://cdn.zimug.com/673b53d7736f90f49f40a24d25cec046) docker是一種虛擬化容器技術,他和虛擬機最根本的區別是:**docker容器和宿主機共用linux操作系統內核,不會在宿主機上再次安裝操作系統**。**docker容器運行狀態下的本質是宿主機上的進程**,通過namespace資源隔離,cgroups資源限制,使它看上去像是一個獨立的虛擬機. |對比項|虛擬機|docker容器| |----|----|----| |啟動速度|龜速(本質是啟動操作系統)|秒速(本質是啟動一個進程)| |鏡像大小|以Ubuntu為例,1G以上|Ubuntu:195M| |應用部署集成|通常是手動安裝|下載鏡像+啟動鏡像(自動)| |內存訪問效率|慢,先訪問虛擬地址|基本等同于宿主機| |CPU損耗|虛擬操作系統造成的損耗較大|接近于0| ## 四、docker的應用場景 * docker鏡像一旦構建,就已經一次性完成了應用自動打包、集成。docker鏡像可以進行版本管理、復制、分享、修改,就像管理代碼一樣。 * 通過統一的docker環境封裝(比如鏡像中封裝了同一版本的JDK、同樣的環境變量等等),保證應用服務運行環境的一致性。避免出現在測試環境上好用,挪到生產環境下運行失敗的問題。 * docker可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。 * 因為鏡像可下載、可復用,docker容器可快速啟動等特性,結合容器編排服務(k8s)可以實現大型分布式部署的彈性伸縮,快速擴展。 ## 五、總結 如果初學者對于本節內容理解起來有困難,也不要氣餒。其實docker的學習難度很低,隨著學習的深入,上面的這些概念很容易理解的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看