docker拾遺-之再入坑

友弟發表於2018-05-10

最近重新學習docker,好久不用,什麼都是忘得差不多了,每天地鐵看看視訊,記記筆記,重新學習docker。

docker簡介

什麼是容器?

  • 一種虛擬化的方案
  • 作業系統級別的虛擬化
  • 只能執行在相同或相似核心的作業系統
  • 依賴於linux核心特性:Namespace和Cgroups(Control Group)

linux容器 VS 虛擬機器

使用的容量更小

什麼是docker?

  • 將應用程式自動部署到容器
  • GO語言開源引擎
  • 2013 dotCloud
  • 基於Apache 2.0開源授權協議發行

docker的目標

  1. 提供簡單輕量的建模方式
  2. 職責的邏輯分離
  3. 快速高效的開發生命週期
  4. 鼓勵使用面向服務的架構

docker的使用場景

  1. 使用docker容器開發測試,部署服務
  2. 建立隔離的執行環境
  3. 搭建測試環境
  4. 構建多使用者的平臺即服務(PaaS)基礎設施
  5. 提供軟體即服務(SaaS)應用程式
  6. 高效能、超大規模的宿主機部署

Docker容器相關技術

docker依賴的linux核心特性

  • NameSpaces名稱空間
  • Control group (Cgroups)控制組

Namespace名稱空間

程式語言

​ 封裝 -> 程式碼隔離

作業系統

​ 系統資源的隔離

​ 程式、網路、檔案系統…

  • PID (Process ID) 程式隔離
  • NET (Network) 管理網路介面
  • IPC (InterProcess Communication) 管理跨程式通訊的訪問
  • MNT (Mount) 管理掛載點
  • UTS (Unix TimeSharing System) 隔離核心和版本標識

Control groups 控制組

  • 用來分配資源
  • 來源於google
  • Linux Kernel 2.6.24 @ 2007
  1. 資源限制
  2. 優先順序設定
  3. 資源計量
  4. 資源控制

Docker容器的能力

  • 檔案系統隔離: 每個容器的都有自己的root檔案系統
  • 程式隔離: 每個容器都執行在自己的程式環境中
  • 網路隔離: 容器的虛擬網路介面和IP地址是分開的
  • 資源隔離和分組:使用Cgroups將CPU和記憶體之類的資源獨立分配給每個Docker容器


相關文章