Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linux Container Introduction

Linux Container Introduction

Linux Container

SJ Chou

June 04, 2019
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. Linux Container
    Introduction
    SJ Chou
    [email protected]
    https://blog.toright.com

    View Slide

  2. 追求更高效的雲端服務架構
    2
    ● 傳統 VM 獨占硬體資源,無法即時調度資源
    ● 雲端服務逐漸走向 Micro Service 架構,需要快速「啟動/關閉/升級」
    ● 軟體工程導入 DevOps,提升開發、測試、佈署、維運之效率
    VM
    * 使用獨立 OS隔離
    效果最佳
    * 獨占硬體資源
    * 啟動速度慢
    * 執行速度略低於
    原生
    Container
    * 共用核心實現隔
    離的沙箱環境
    * 硬體資源共用
    * 秒級啟動
    * 執行速度接近原

    VM 與 Container 之差異

    View Slide

  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 使用的所有功能

    View Slide

  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)

    View Slide

  5. Container in Micro Service & DevOps
    DevOps
    ● 開發:OS 無關的開發環境建置,只要有 Docker 就可以開發與建置
    ● 測試:透過 Jenkins / GitLab PipeLine 啟動乾淨的 Sandbox 測試環境,讓測試過
    程更穩定
    ● 佈署:以往使用 Package 佈署需要數小時,改用 Container 佈署縮短為數分鐘
    ● 維運:透過 Docker 實現 Cluster 架構與灰度升級
    Micro Service
    透過 Container Manager 管理伺服器群集中的 Service,實現自動調度、容錯、高
    可用、分散
    5

    View Slide

  6. 技術內容/分析 – 什麼是 Sandbox 沙箱?
    6
    提供一個完全隔離的程式執行環境,控制交互影響範圍與安全性,沙箱
    通常具備以下幾種特性:
    ● 快速啟動與銷毀
    ● 執行結果不影響宿主環境
    ● 不同沙箱彼此之間不交互影響
    沙箱是一種設計模式,許多直譯程式執行環境都是透過 Runtime, Container 等
    等不同的 Sandbox 變形來達成目的,像是我們的瀏覽器、Java VM 等等其實都
    是一樣的概念...

    View Slide

  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

    View Slide

  8. 技術內容/分析 – Docker Process 隔離機制介紹
    8
    Container 中的
    Process 完全與宿主
    Host 隔離,Process 透
    過 PID 映射機制隔離
    在沙箱中

    View Slide

  9. 技術內容/分析 – Dockerize 的經驗與挑戰
    9
    ● 將既有系統服務 Dockerize,走向 Micro Service 架構
    ● 系統服務間耦合性太高,不易拆解 (一個容器一個行程)
    ● Micro Service 架構實現 (Stateless, Distributed)
    ● 基礎自動化工具建立
    ● 進階的 Docker Life
    ○ 建置私有鏡像站
    ○ 導入 DevOps
    ○ 更高度的自動化
    ○ Docker-in-Docker

    View Slide

  10. Thanks
    [email protected]
    https://blog.toright.com

    View Slide