docker拾遺-之再入坑
最近重新學習docker,好久不用,什麼都是忘得差不多了,每天地鐵看看視訊,記記筆記,重新學習docker。
docker簡介
什麼是容器?
- 一種虛擬化的方案
- 作業系統級別的虛擬化
- 只能執行在相同或相似核心的作業系統
- 依賴於linux核心特性:Namespace和Cgroups(Control Group)
linux容器 VS 虛擬機器
使用的容量更小
什麼是docker?
- 將應用程式自動部署到容器
- GO語言開源引擎
- 2013 dotCloud
- 基於Apache 2.0開源授權協議發行
docker的目標
- 提供簡單輕量的建模方式
- 職責的邏輯分離
- 快速高效的開發生命週期
- 鼓勵使用面向服務的架構
docker的使用場景
- 使用docker容器開發測試,部署服務
- 建立隔離的執行環境
- 搭建測試環境
- 構建多使用者的平臺即服務(PaaS)基礎設施
- 提供軟體即服務(SaaS)應用程式
- 高效能、超大規模的宿主機部署
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
- 資源限制
- 優先順序設定
- 資源計量
- 資源控制
Docker容器的能力
- 檔案系統隔離: 每個容器的都有自己的root檔案系統
- 程式隔離: 每個容器都執行在自己的程式環境中
- 網路隔離: 容器的虛擬網路介面和IP地址是分開的
- 資源隔離和分組:使用Cgroups將CPU和記憶體之類的資源獨立分配給每個Docker容器
相關文章
- Zepto核心模組之工具方法拾遺
- JSON實戰拾遺之數字精度JSON
- Java Web 拾遺JavaWeb
- [MASM拾遺]OffsetASM
- 前端技能拾遺前端
- OrchardCore Headless建站拾遺
- 物件導向拾遺物件
- 容器化 Confluence 使用拾遺
- golang拾遺:嵌入型別Golang型別
- Confluence 容器化使用拾遺
- golang拾遺:指標和介面Golang指標
- Vue.js基礎拾遺Vue.js
- PHP 使用 Kafka 安裝拾遺PHPKafka
- AS拾遺--向PM學習二
- C#拾遺補闕【01】:字串C#字串
- 課時39:類與物件:拾遺物件
- (零) React Native 專案開發拾遺React Native
- 前端拾遺--javascript-ES6基礎前端JavaScript
- [Go]Go 語言基礎拾遺(一)Go
- MIT 6.824拾遺(一)聊聊basic-paxosMIT
- 【105天】前端碎片知識拾遺00003前端
- 【106天】前端碎片知識拾遺00004前端
- JAVA 拾遺 — CPU Cache 與快取行Java快取
- mysql 拾遺提高(函式、事務、索引)MySql函式索引
- React拾遺:Render Props及其使用場景React
- 基礎拾遺---委託,匿名函式,lambda函式
- [C#.NET拾遺補漏]01:字串操作C#字串
- 2萬字 | 前端基礎拾遺90問前端
- iOS拾遺—— Assets Catalogs 與 I/O 優化iOS優化
- JAVA拾遺 — JMH與8個測試陷阱Java
- Git拾遺:一機多SSH-Key管理Git
- 《曠野之息》劇情拾遺與新作前瞻(上):弦外之音與啞謎
- golang拾遺:為什麼我們需要泛型Golang泛型
- Netty拾遺(七)——粘包與拆包問題Netty
- 【C++】 68_拾遺: 令人迷惑的寫法C++
- 老工具 fiddler-使用拾遺及一些技巧
- golang拾遺:實現一個不可複製型別Golang型別
- 初級程式設計師的SQL拾遺-②(表操作)程式設計師SQL