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容器
相關文章
- mongoose 拾遺Go
- Zepto核心模組之工具方法拾遺
- 前端技能拾遺前端
- Linux拾遺Linux
- [MASM拾遺]OffsetASM
- Java Web 拾遺JavaWeb
- JSON實戰拾遺之數字精度JSON
- 物件導向拾遺物件
- 【java web】--Ajax拾遺JavaWeb
- C語言拾遺C語言
- golang拾遺:嵌入型別Golang型別
- Unix廣告拾遺 by Dennis Ritchie
- Objective-C Runtime 執行時之六:拾遺Object
- Vue.js基礎拾遺Vue.js
- PHP 使用 Kafka 安裝拾遺PHPKafka
- AS拾遺--向PM學習二
- golang拾遺:指標和介面Golang指標
- 【演算法拾遺】階乘演算法
- 【Java學習筆記】拾遺Java筆記
- C++標準庫::拾遺C++
- 課時39:類與物件:拾遺物件
- C#拾遺補闕【01】:字串C#字串
- 閉包拾遺 & 垃圾回收機制
- 【JS拾遺】函式的引數JS函式
- C++基礎::拾遺&&瑣碎C++
- 前端拾遺--javascript-ES6基礎前端JavaScript
- [Go]Go 語言基礎拾遺(一)Go
- MIT 6.824拾遺(一)聊聊basic-paxosMIT
- JAVA 拾遺 — CPU Cache 與快取行Java快取
- mysql 拾遺提高(函式、事務、索引)MySql函式索引
- 【演算法拾遺】最大公約數演算法
- 2萬字 | 前端基礎拾遺90問前端
- 基礎拾遺---委託,匿名函式,lambda函式
- [C#.NET拾遺補漏]01:字串操作C#字串
- JAVA拾遺 — JMH與8個測試陷阱Java
- React拾遺:Render Props及其使用場景React
- Git拾遺:一機多SSH-Key管理Git
- 【演算法拾遺】最大數和最小數演算法