🐳Docker簡介

一.爲何要有Docker

1.一個軟件從開發到部署的問題 : 運行環境和配置python

2.軟件是否能夠帶環境安裝 : 安裝時將開發的環境如出一轍的複製過來docker

一款產品從開發到上線,從操做系統,到運行環境,再到應用配置
做爲開發 + 運維之間的協做咱們須要關心不少東西,這也是不少互聯網公司都不得不面對的問題
特別是各類版本的迭代以後,不一樣版本環境的兼容,對運維人員都是考驗
"Docker"之因此發展如此迅速,也是由於它對此給出了一個標準化的解決方案

二.什麼是Docker

  • 基於 Go 語言實現的雲開源項目
  • docker是一個開源的軟件部署解決方案
🎅示例1
你在金魚店的魚缸裏買一條小金魚回去,養在家裏的盆子裏,那麼小金魚有可能水土不服XX,若是你把連魚帶缸的買回去就不會出現這種狀況了,由於生存環境沒有改變

🎅誇張示例2
若是咱們搬家,通常是把傢俱之類的一件一件的搬到新房子裏去,而後到新房子裏有從新佈置,"Docker"的理念就是直接把房子剷起來放置到新的住址,那麼裏面的配置都不用動了,直接能夠入住
  • 解決了運行環境配置問題軟件容器, 方便持續集成並有助於總體發佈的容器虛擬化技術

ps : docker理念:一次構建到處運行服務器

三.Docker能作什麼

1.運行環境的配置

  • 只須要一次配置好環境,換到別的機子上就能夠一鍵部署好,大大簡化了操做

2.虛擬機技術

  • 在一個操做系統之上運行 / 安裝另外一種操做系統
  • 應用程序, 操做系統和硬件三者之間的關係不變
🎅缺點
1. 資源佔用多
2. 冗餘步驟多
3. 啓動慢(分鐘級)

3.容器虛擬化技術

  • 不是模擬一個完整的操做系統, 他是將軟件運行所須要的全部資源打包到一個隔離的容器
  • 只須要軟件工做所須要的庫資源和設置
  • 所以系統變得高效輕量, 且能保證任何環境中軟件都能始終如一的運行

容器虛擬化技術

4.虛擬機技術與容器虛擬化技術

  • 不一樣之處
🎅傳統虛擬技術:
	🔰虛擬出一堆硬件, 運行一個完整的操做系統
	🔰而後在該系統上再運行一系列的應用程序

🎅容器虛擬化技術:
    🔰容器內的應用進程直接運行在宿主的內核, 容器內沒有機子的內核
    🔰而且沒有進行硬件的虛擬,所以更輕便 (只包含業務所須要的環境:"docker"基礎鏡像就"170M")
    🔰每一個容器之間相互隔離, 每一個容器都有本身的文件系統, 容器之間不會相互影響, 能區分計算資源

5.開發和運維問題解決

Docker理念 :一次構建到處運行架構

  • 更快的應用交付和部署
🎅傳統的應用開發完成後,須要提供一堆安裝程序和配置說明文檔,安裝部署後需根據配置文檔進行繁雜的配置才能正常運行

🎅Docker化以後只須要交付少許容器鏡像文件,在正式生產環境加載鏡像並運行便可,應用安裝配置在鏡像裏已經內置好,大大節省部署配置和測試驗證時間
  • 更便捷的升級和擴縮容
🎅隨着微服務架構和Docker的發展,大量的應用會經過微服務方式架構,應用的開發構建將變成搭樂高積木同樣,每一個"Docker容"器將變成一塊"積木","應用的升級將變得很是容易"

🎅當現有的容器不足以支撐業務處理時,可經過鏡像運行"新的容器進行快速擴容",使應用系統的擴容從原先的天級變成分鐘級甚至秒級
  • 更簡單的系統運維
🎅應用容器化運行後,生產環境運行的應用可與開發、測試環境的應用"高度一致",容器會將應用程序相關的環境和狀態徹底封裝起來,不會由於底層基礎架構和操做系統的不一致性給應用帶來影響,產生新的BUG

🎅當出現程序異常時,也能夠經過測試環境的相同容器進行快速定位和修復
  • 更高效的計算資源利用
🎅Docker是內核級虛擬化,其不像傳統的虛擬化技術同樣須要額外的Hypervisor支持,因此在一臺物理機上"能夠運行不少個容器實例",可大大"提高物理服務器的CPU和內存的利用率"

四.容器的基本組成

1.結構圖

Docker結構圖

3.鏡像 : image

  • 一個只讀模板, 一個鏡像能夠建立出來不少個容器
  • 至關於Python當中類與對象的概念,一個類能夠實例化出來許多的 obj

4.容器 : container

  • 獨立運行的一個或一組應用, 是由鏡像實例化出來的
  • 能夠把它當作是一個迷你版的Linux環境, 基礎鏡像170M (咱們裝的通常4個多G)
  • 它能夠被啓動、開始、中止、刪除。每一個容器都是相互隔離的

5.倉庫 : repository

  • 集中存放鏡像文件的場所
  • 倉庫有兩種區分
🎅倉庫註冊服務器:
	🔰存放着多個倉庫
	
🎅倉庫:
    🔰 每一個倉庫包含多個鏡像,每一個鏡像有不一樣的標籤('tag':相似於版本號)
    🔰倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式
    🔰最大的公開倉庫是 "Docker Hub:(https://hub.docker.com/)"

6.總結

  • Docker 自己是一個容器運行載體或稱之爲管理引擎
  • image 文件生成的容器實例,自己也是一個文件,稱爲鏡像文件
  • 同一個 image 文件,能夠生成多個同時運行的容器實例
  • 一個容器運行一種服務,當咱們須要的時候,就能夠經過docker客戶端建立一個對應的運行實例,也就是咱們的容器
  • 至於倉庫,就是放了一堆鏡像的地方,咱們能夠把鏡像發佈到倉儲中,須要的時候從倉儲中拉下來就能夠了
相關文章
相關標籤/搜索