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

Linux Container Introduction

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Linux Container Introduction

Linux Container

Avatar for SJ Chou

SJ Chou

June 04, 2019
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. 追求更高效的雲端服務架構 2 • 傳統 VM 獨占硬體資源,無法即時調度資源 • 雲端服務逐漸走向 Micro Service

    架構,需要快速「啟動/關閉/升級」 • 軟體工程導入 DevOps,提升開發、測試、佈署、維運之效率 VM * 使用獨立 OS隔離 效果最佳 * 獨占硬體資源 * 啟動速度慢 * 執行速度略低於 原生 Container * 共用核心實現隔 離的沙箱環境 * 硬體資源共用 * 秒級啟動 * 執行速度接近原 生 VM 與 Container 之差異
  2. 基於 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 使用的所有功能
  3. 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)
  4. Container in Micro Service & DevOps DevOps • 開發:OS 無關的開發環境建置,只要有

    Docker 就可以開發與建置 • 測試:透過 Jenkins / GitLab PipeLine 啟動乾淨的 Sandbox 測試環境,讓測試過 程更穩定 • 佈署:以往使用 Package 佈署需要數小時,改用 Container 佈署縮短為數分鐘 • 維運:透過 Docker 實現 Cluster 架構與灰度升級 Micro Service 透過 Container Manager 管理伺服器群集中的 Service,實現自動調度、容錯、高 可用、分散 5
  5. 技術內容/分析 – 什麼是 Sandbox 沙箱? 6 提供一個完全隔離的程式執行環境,控制交互影響範圍與安全性,沙箱 通常具備以下幾種特性: • 快速啟動與銷毀

    • 執行結果不影響宿主環境 • 不同沙箱彼此之間不交互影響 沙箱是一種設計模式,許多直譯程式執行環境都是透過 Runtime, Container 等 等不同的 Sandbox 變形來達成目的,像是我們的瀏覽器、Java VM 等等其實都 是一樣的概念...
  6. • 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
  7. 技術內容/分析 – Docker Process 隔離機制介紹 8 Container 中的 Process 完全與宿主

    Host 隔離,Process 透 過 PID 映射機制隔離 在沙箱中
  8. 技術內容/分析 – Dockerize 的經驗與挑戰 9 • 將既有系統服務 Dockerize,走向 Micro Service

    架構 • 系統服務間耦合性太高,不易拆解 (一個容器一個行程) • Micro Service 架構實現 (Stateless, Distributed) • 基礎自動化工具建立 • 進階的 Docker Life ◦ 建置私有鏡像站 ◦ 導入 DevOps ◦ 更高度的自動化 ◦ Docker-in-Docker