SlideShare a Scribd company logo
1 of 10
Download to read offline
Linux Container
Introduction
SJ Chou
sj@toright.com
https://blog.toright.com
追求更高效的雲端服務架構
2
● 傳統 VM 獨占硬體資源,無法即時調度資源
● 雲端服務逐漸走向 Micro Service 架構,需要快速「啟動/關閉/升級」
● 軟體工程導入 DevOps,提升開發、測試、佈署、維運之效率
VM
* 使用獨立 OS隔離
效果最佳
* 獨占硬體資源
* 啟動速度慢
* 執行速度略低於
原生
Container
* 共用核心實現隔
離的沙箱環境
* 硬體資源共用
* 秒級啟動
* 執行速度接近原
生
VM 與 Container 之差異
基於 Linux Kernel 的容器技術 LxC
3
Linux Container 又稱為 LxC,主要由 cgroups 與 namespace 兩個核心特性所
實現
● cgroups 早期由 Google 工程師開發的 Process Containers 專案,後來併入
Linux Kernel 2.6.24,正式以 cgroups 命名
● namespace 從 Linux Kernel 2.4.19 開始發展功能,一直到 3.8 才完善了目前
Container 使用的所有功能
Linux 容器技術的演進
L1: 透過 Linux Kernel 實現了沙箱
隔離機制 LxC
L2: 由於直接操作 LxC 太麻煩了,
所以 Docker 封裝 LxC,提供我們更
方便管理 Container 的工具。
L3: 但由於 Container 太好用了,所
以又需要 Container Manager 來協助
管理與調度大規模容器應用。
4
Kubernetes, Docker Swarm, Cloud Foundry…
Linux Container (LxC)
Linux Kernel (Namespace, CGroups)
Docker
(Docker Compose)
Container in Micro Service & DevOps
DevOps
● 開發:OS 無關的開發環境建置,只要有 Docker 就可以開發與建置
● 測試:透過 Jenkins / GitLab PipeLine 啟動乾淨的 Sandbox 測試環境,讓測試過
程更穩定
● 佈署:以往使用 Package 佈署需要數小時,改用 Container 佈署縮短為數分鐘
● 維運:透過 Docker 實現 Cluster 架構與灰度升級
Micro Service
透過 Container Manager 管理伺服器群集中的 Service,實現自動調度、容錯、高
可用、分散
5
技術內容/分析 – 什麼是 Sandbox 沙箱?
6
提供一個完全隔離的程式執行環境,控制交互影響範圍與安全性,沙箱
通常具備以下幾種特性:
● 快速啟動與銷毀
● 執行結果不影響宿主環境
● 不同沙箱彼此之間不交互影響
沙箱是一種設計模式,許多直譯程式執行環境都是透過 Runtime, Container 等
等不同的 Sandbox 變形來達成目的,像是我們的瀏覽器、Java VM 等等其實都
是一樣的概念...
● Linux Kernel 透過 Namespace 與 Control Group 實現隔離沙箱機制
○ Namespace 負責邏輯資源的隔離
■ UTS:隔離 hostname
■ PID:透過映射隔離 Process ID
■ IPC:隔離 Inter-Process Communication
■ mnt:檔案磁碟掛載 (chroot)
■ net:網路隔離
■ user:隔離 User ID 映射關係
○ Control Group 負責 Process 實體資源的控制與分配
■ CPU, Memory, IO
○ Union Filesystem (屬於 Docker 範疇)
■ Image 實現鏡像檔案系統 (AUFS)
技術內容/分析 – 透過 Linux Container 機制實現沙箱
7
技術內容/分析 – Docker Process 隔離機制介紹
8
Container 中的
Process 完全與宿主
Host 隔離,Process 透
過 PID 映射機制隔離
在沙箱中
技術內容/分析 – Dockerize 的經驗與挑戰
9
● 將既有系統服務 Dockerize,走向 Micro Service 架構
● 系統服務間耦合性太高,不易拆解 (一個容器一個行程)
● Micro Service 架構實現 (Stateless, Distributed)
● 基礎自動化工具建立
● 進階的 Docker Life
○ 建置私有鏡像站
○ 導入 DevOps
○ 更高度的自動化
○ Docker-in-Docker
Thanks
sj@toright.com
https://blog.toright.com

More Related Content

What's hot

51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
Hong Cai
 

What's hot (20)

Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
 
Docker Build
Docker BuildDocker Build
Docker Build
 
微服務對IT人員的衝擊
微服務對IT人員的衝擊微服務對IT人員的衝擊
微服務對IT人員的衝擊
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote Development
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
企业应用架构:模块化、微服务与 Linux 容器技术
企业应用架构:模块化、微服务与 Linux 容器技术企业应用架构:模块化、微服务与 Linux 容器技术
企业应用架构:模块化、微服务与 Linux 容器技术
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇
 

Similar to Linux Container Introduction

企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
Paul Chao
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
OpenCity Community
 
Dbbuild2
Dbbuild2Dbbuild2
Dbbuild2
l l
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
drewz lin
 

Similar to Linux Container Introduction (20)

企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
Docker introduce and vs kernel virtual machine
Docker introduce and vs kernel virtual machineDocker introduce and vs kernel virtual machine
Docker introduce and vs kernel virtual machine
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
把玩 Jenkins CI
把玩 Jenkins CI把玩 Jenkins CI
把玩 Jenkins CI
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)
 
Dbbuild2
Dbbuild2Dbbuild2
Dbbuild2
 
Nova与虚拟机管理
Nova与虚拟机管理Nova与虚拟机管理
Nova与虚拟机管理
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
 
Kubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCUKubernetes (K8s) 簡介 | GDSC NYCU
Kubernetes (K8s) 簡介 | GDSC NYCU
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式用 Docker 改善團隊合作模式
用 Docker 改善團隊合作模式
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
從技術找未來
從技術找未來從技術找未來
從技術找未來
 
Symantec Backup Exec 2012 產品技術訓練
Symantec Backup Exec 2012 產品技術訓練Symantec Backup Exec 2012 產品技術訓練
Symantec Backup Exec 2012 產品技術訓練
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 

More from 家弘 周

The Clean Coder - 預估與壓力 (書摘)
The Clean Coder - 預估與壓力 (書摘)The Clean Coder - 預估與壓力 (書摘)
The Clean Coder - 預估與壓力 (書摘)
家弘 周
 

More from 家弘 周 (13)

2020 MLaaS 產業介紹.pdf
2020 MLaaS 產業介紹.pdf2020 MLaaS 產業介紹.pdf
2020 MLaaS 產業介紹.pdf
 
用 Keras 玩 Machine Learning
用 Keras 玩 Machine Learning用 Keras 玩 Machine Learning
用 Keras 玩 Machine Learning
 
區塊鏈共識機制與 EOS
區塊鏈共識機制與 EOS區塊鏈共識機制與 EOS
區塊鏈共識機制與 EOS
 
簡單線性回歸 & K-Means (Machine learning)
簡單線性回歸 & K-Means (Machine learning)簡單線性回歸 & K-Means (Machine learning)
簡單線性回歸 & K-Means (Machine learning)
 
WordPress Blog SEO 兩三事
WordPress Blog SEO 兩三事WordPress Blog SEO 兩三事
WordPress Blog SEO 兩三事
 
SEO 武林天下
SEO 武林天下SEO 武林天下
SEO 武林天下
 
MOPCON 2015 - 軟體、測試、程式設計家
MOPCON 2015 - 軟體、測試、程式設計家MOPCON 2015 - 軟體、測試、程式設計家
MOPCON 2015 - 軟體、測試、程式設計家
 
敏捷開花那些小事
敏捷開花那些小事敏捷開花那些小事
敏捷開花那些小事
 
小猴子也會的 Ubuntu Desktop 14.04 安裝教學
小猴子也會的 Ubuntu Desktop 14.04 安裝教學小猴子也會的 Ubuntu Desktop 14.04 安裝教學
小猴子也會的 Ubuntu Desktop 14.04 安裝教學
 
軟體品質與持續整合
軟體品質與持續整合軟體品質與持續整合
軟體品質與持續整合
 
REST to RESTful Web Service
REST to RESTful Web ServiceREST to RESTful Web Service
REST to RESTful Web Service
 
Caching in HTTP
Caching in HTTPCaching in HTTP
Caching in HTTP
 
The Clean Coder - 預估與壓力 (書摘)
The Clean Coder - 預估與壓力 (書摘)The Clean Coder - 預估與壓力 (書摘)
The Clean Coder - 預估與壓力 (書摘)
 

Linux Container Introduction

  • 2. 追求更高效的雲端服務架構 2 ● 傳統 VM 獨占硬體資源,無法即時調度資源 ● 雲端服務逐漸走向 Micro Service 架構,需要快速「啟動/關閉/升級」 ● 軟體工程導入 DevOps,提升開發、測試、佈署、維運之效率 VM * 使用獨立 OS隔離 效果最佳 * 獨占硬體資源 * 啟動速度慢 * 執行速度略低於 原生 Container * 共用核心實現隔 離的沙箱環境 * 硬體資源共用 * 秒級啟動 * 執行速度接近原 生 VM 與 Container 之差異
  • 3. 基於 Linux Kernel 的容器技術 LxC 3 Linux Container 又稱為 LxC,主要由 cgroups 與 namespace 兩個核心特性所 實現 ● cgroups 早期由 Google 工程師開發的 Process Containers 專案,後來併入 Linux Kernel 2.6.24,正式以 cgroups 命名 ● namespace 從 Linux Kernel 2.4.19 開始發展功能,一直到 3.8 才完善了目前 Container 使用的所有功能
  • 4. Linux 容器技術的演進 L1: 透過 Linux Kernel 實現了沙箱 隔離機制 LxC L2: 由於直接操作 LxC 太麻煩了, 所以 Docker 封裝 LxC,提供我們更 方便管理 Container 的工具。 L3: 但由於 Container 太好用了,所 以又需要 Container Manager 來協助 管理與調度大規模容器應用。 4 Kubernetes, Docker Swarm, Cloud Foundry… Linux Container (LxC) Linux Kernel (Namespace, CGroups) Docker (Docker Compose)
  • 5. Container in Micro Service & DevOps DevOps ● 開發:OS 無關的開發環境建置,只要有 Docker 就可以開發與建置 ● 測試:透過 Jenkins / GitLab PipeLine 啟動乾淨的 Sandbox 測試環境,讓測試過 程更穩定 ● 佈署:以往使用 Package 佈署需要數小時,改用 Container 佈署縮短為數分鐘 ● 維運:透過 Docker 實現 Cluster 架構與灰度升級 Micro Service 透過 Container Manager 管理伺服器群集中的 Service,實現自動調度、容錯、高 可用、分散 5
  • 6. 技術內容/分析 – 什麼是 Sandbox 沙箱? 6 提供一個完全隔離的程式執行環境,控制交互影響範圍與安全性,沙箱 通常具備以下幾種特性: ● 快速啟動與銷毀 ● 執行結果不影響宿主環境 ● 不同沙箱彼此之間不交互影響 沙箱是一種設計模式,許多直譯程式執行環境都是透過 Runtime, Container 等 等不同的 Sandbox 變形來達成目的,像是我們的瀏覽器、Java VM 等等其實都 是一樣的概念...
  • 7. ● Linux Kernel 透過 Namespace 與 Control Group 實現隔離沙箱機制 ○ Namespace 負責邏輯資源的隔離 ■ UTS:隔離 hostname ■ PID:透過映射隔離 Process ID ■ IPC:隔離 Inter-Process Communication ■ mnt:檔案磁碟掛載 (chroot) ■ net:網路隔離 ■ user:隔離 User ID 映射關係 ○ Control Group 負責 Process 實體資源的控制與分配 ■ CPU, Memory, IO ○ Union Filesystem (屬於 Docker 範疇) ■ Image 實現鏡像檔案系統 (AUFS) 技術內容/分析 – 透過 Linux Container 機制實現沙箱 7
  • 8. 技術內容/分析 – Docker Process 隔離機制介紹 8 Container 中的 Process 完全與宿主 Host 隔離,Process 透 過 PID 映射機制隔離 在沙箱中
  • 9. 技術內容/分析 – Dockerize 的經驗與挑戰 9 ● 將既有系統服務 Dockerize,走向 Micro Service 架構 ● 系統服務間耦合性太高,不易拆解 (一個容器一個行程) ● Micro Service 架構實現 (Stateless, Distributed) ● 基礎自動化工具建立 ● 進階的 Docker Life ○ 建置私有鏡像站 ○ 導入 DevOps ○ 更高度的自動化 ○ Docker-in-Docker