docker 學習筆記-1

參考:https://www.kancloud.cn/guanfuchang/docker/838932

爲什麼用docker?

 

思考一:
我們之前是如何將項目發佈到Linux服務器的?
大致步驟如下

  1. 配置java 環境
  2. 安裝tomcat
  3. 將項目war包上傳到tomcat的webapps下
  4. 修改配置文件
  5. 啓動tomcat

這樣看似沒問題,其實我們想想,發一臺機器還好,這幾步就完成了。如果我們要將這個項目發佈到N多臺機器,那麼我們是否需要再每個機器上都進行相同的步驟?並且要進行環境兼容性的測試。


思考二:
再來看一個例子,我們現在是想部署一個成熟的產品,這個產品是go語言開發的,我們該如何部署?go語言運行的環境怎麼裝,這個項目又該如何部署?


思考三:
一臺linux機器上裝了很多軟件,部署了很多項目,相互之間有干擾怎麼辦?

什麼是docker?

Docker是以容器技術爲核心的一套應用的獨立構建,分發,執行的生態體系

 

 

場景1:研發環境ok,告訴qa同學可以測試了,結果一上手  頁面不能訪問,功能不能跳轉,dev 和tester 開始xxx

場景2:開始上線,結果各位研發同學通宵搞了一天,還是不行,一上線就這裏不通,那裏不通,運維和dev 開始xxx

 

Docker 解決了什麼問題

  • 程序在我這裏跑的好好的,在你那怎麼不行了?(環境與程序打包交付)
  • 系統好卡,是哪個進程把CPU吃光了?(容器之間沙箱隔離)
  • 這套系統我已經搭建好了,要不你再重新搭一遍?(一次構建,到處運行)

 

Docker 的優點

    • 更快速的交付和部署
      對開發和運維來說,最希望的是一次構建或配置,可以在任意地方正常運行。
      例如:開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署代碼。Docker容器很輕很快,容器的啓動時間是秒級的,大量地節約開發,測試,部署的時間,並且解決開發環境和生產環境不一致的問題
    • 更輕鬆的遷移和擴展
      Docker容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等,這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個平臺
    • 更高的資源利用率
      Docker對系統資源的利用率很高,一臺主機上可以同時運行數千個Docker容器,容器除了運行其中的應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘量小。

 

 

Docker常用場景

  • 構建DevOps流程,實現運維的自動化
  • 企業私有的PAAS平臺,降低開發成本,提升效率
  • 企業級AppStore,統一的後端系統分發平臺
  • 間歇式計算任務
  • 構建微服務架構

 

 

虛擬化和Docker的對比

 

 

Docker的架構

 

 

Docker daemon(Docker 進程)
Docker進程是部署在linux操作系統上,負責支撐Docker Container(容器)的運行以及本地Image(鏡像)的管理。

Docker Client
用戶不直接操作Docker daemon,用戶通過Docker client訪問Docker,Docker client提供pull,build,run等操作命令。

Docker Images
Docker 鏡像,就是一個只讀的模板。
例如一個鏡像可以包含一個完整的linux操作系統環境,裏面安裝了用戶需要的應用程序。
鏡像可以用來創建Docker容器。Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以從其他人那裏下載一個已經做好的鏡像來直接使用。

Docker Containers
Docker 容器,是鏡像的一個運行實例。
Docker 是利用容器來運行應用的,它可以被啓動、開始、停止、刪除。每個容器都是互相隔離的,保證安全的平臺。可以把容器看做是一個簡易版的linux環境和運行在其中的應用程序。

Docker Registry
倉庫分爲公開倉庫和私有倉庫兩種形式。
最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載;用戶也可以在本地網絡內創建一個私有倉庫。
當用戶創建了自己的鏡像之後就可以使用push命令將它上傳到公有或私有倉庫,這樣其他人只需要從倉庫上pull下來就可以了。

 

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