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

Linux Container Introduction

Linux Container Introduction

Linux Container

279d49192015dfbef7942bb6c5b2d817?s=128

SJ Chou

June 04, 2019
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. Linux Container Introduction SJ Chou sj@toright.com https://blog.toright.com

  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
  10. Thanks sj@toright.com https://blog.toright.com