Linux OS หลายรส Ubuntu 蠻 general 別人 目標 niche: security Kali Linux, lightweight Xubuntu, Hannah Montana Linux(!) Desktop 用 vanilla Linux OS 好 但 specialized tasks 像 run server 好 找 tailored version
Containers 越來越 熱門 Container Linux (เดิม CoreOS) Linux OS 設計 簡單 containerized deployments 新 niche Linux OS 之一 看 overview 和 hands-on Container Linux
Hands-On Container Linux: Background Knowledge
ก่อน 深入 Container Linux 簡略 server architecture Container Linux 設計 clustered deployments 聽 複雜 但 簡單 computer cluster: multiple servers 一起 工作 function 一個 unit/system 不是 multiple 而且 cluster computers 有 nodes/servers 做 同樣 功能 node = single machine cluster = server group 一起工作
Common Container Linux deployments 在 cluster environments CoreOS (เดิม) 包括 spin up cluster จาก single machine defining feature Container Linux: reliance on containers
ต่าง traditional desktop OS 所有 apps 跑 在 containers VMs 和 containers 都 用 virtualization methods containers 不同 VMs containers 用 同樣 OS kernel host machine 因為 containerized apps 和 host 同 kernel container deployments 受益 increased efficiency VM config: 每 VM 跑 app + guest OS 在 host OS/hardware 上
Containerized deployments 跑 apps 在 containers 上 virtualization software Docker 最 熱門 container software chroot, LXC, Linux-VServer 排名 Docker alternatives
Hands-On Container Linux: 為什麼 用 Containers?
OK containers virtualization method 為什麼 選 containerized environment? 通常 containers 改善 performance 避免 獨立 OS 用 shared kernel maximize CPU, storage, memory efficiency
不 需 運行 multiple OS instances 像 VM config 運行 更多 containers 創建 containers 更快 VM environment 因此 containers 適合 maintain agility 允許 continuous delivery/integration
Agile development 專注 iteration 和 factoring unpredictability 讀 Agile Manifesto 了解 agile philosophy 但 尽管 containers 優勢 不 perfect virtualization method 容器 share host OS kernel 有 security risk 任何 vulnerability/breach 影響 container 存取 OS 有 workaround: 運行 containerized apps 在 OS 在 VM 確保 host machine OS 隔離 從 單一 container host OS
Containerization 要求 containers 同 OS VMs: 每 app 自己的 OS 不能 運行 Windows Server apps 在 containerized Linux env 和 vice versa
Hands-On Container Linux: Container Linux 是什麼?
CoreOS/Container Linux 開源 Linux OS 輕量 distro 目標 clustered deployments 具體 CoreOS 專注 simple, reliable, scalable deployments 沒有 package manager 相反 Container Linux 要求 所有 apps 跑 在 containers Container Linux 用 Chrome OS base 所以 輕量 測試: 我 跑 CoreOS VM aging HP Envy m6-1205dx AMD A10 laptop system resource consumption 低
Container Linux 避免 traditional desktop Linux features 保持 distro 輕量 不像 desktop OS 沒有 package manager 所有 apps 跑 Docker containers portability 和 service isolation 想 desktop environment? 沒戲 Container Linux 沒有 GUI 一切 command line CoreUpdate dashboard 信息 machine health, running services, cluster health 但 只 可用 Premium Managed Linux subscription component
Container Linux Architecture
Container Linux 輕量 設計 containerizing 和 clustering 沒有 desktop environment configuration 不同 Linux OS 像 CentOS/Ubuntu 初始 boot Container Linux 載入 cloud-config file 你 需要 input 信息 cloud-config 有點 tricky 尤其是 不 熟悉 cloud-config 但 essential file 給 Container Linux 能力 load essential services, alter parameters, manage clusters
進一步 etcd 和 fleet daemons integral Container Linux 兩 服務 launch at startup default 此外 boot cloud-config file 讓 host 知道 如何 join existing cluster etcd daemon distributes/stores data hosts 在 cluster essential maintaining configurations 和 service discovery fleet daemon 類似 distributed init link 到 systemd init hosts 在 cluster 處理 tasks: service scheduling
每 system 在 fleet cluster 跑 一個 fleetd daemon 承擔 兩 主要 責任 agent 和 engine engine: scheduling decisions agent: executes units fleet cluster etcd 唯一 datastore 信息: cluster presence, unit state, unit files 存 在 etcd daemon 此外 medium fleet agent/engine communication
Hands-On Container Linux: ใครควรใช้?
Container Linux 免費下載, 輕量, 簡單 安裝 VM 任何人 需要 quick, scalable, containerized deployments 應該 選 Container Linux 主要 system admins 和 database admins 受益 最多 Container Linux 沒 desktop environment 適合 cluster management 和 server setting 找 Linux server OS Container Linux 是 12 best Linux server distros 之一
Air Pair 寫作 絕佳 CoreOS incentives 文章 提到 high availability, production environment maintenance, software version control, etcd 主要 draws 使用 Container Linux 值得注意的是 非常 dedicated open-source community Container Linux 為 seasoned Linux users 幫助 documentation comprehensive 但 假設 moderate Linux familiarity Novice/beginner users 可能 難 初始 安裝
具體 cloud-config 可能 挑戰 在一個 CoreOS 安裝 視頻 評論 YouTube user Setyoso Nugroho: "Nice tutorial! Quite confusing when learning #cloud-config file configuration in CoreOS" 配置 不 太 難 但 Container Linux 假設 強掌握 Linux features 像 VIM editor
Hands-On Container Linux: 如何 安裝
多 方法 安裝 Container Linux CoreOS website official platforms: Amazon EC2, DigitalOcean, Microsoft Azure, bare metal, OpenStack 旁邊 Oracle Linux, CentOS, Suse CoreOS 一個 幾個 Azure compatible Linux OS 多謝 vibrant community platforms: Packet, Rackspace, Brightbox, VirtualBox, VMware 支援 我 發現 最簡單 方法 安裝 Container Linux VirtualBox 用 ISO file 快速 指南 用 VirtualBox
Configuring VirtualBox
開 VirtualBox 提示 VM name, OS type, version 我 叫 簡單 CoreOS type: Linux version: Linux 2.6/3.x/4/x (64-bit) Click Next
配置 RAM CoreOS 建議 最低 1024 MB RAM
加 virtual hard disk 用 create a virtual hard disk now option
硬碟 file type: VDI (VirtualBox Disk Image)
配置 storage space 建議 dynamically allocated hard disk file
選 file location 和 size 我 留 default CoreOS 名字, 選 8 GB file data size
CoreOS VirtualBox VM 配置 好 綠色 Start button
Click Start 選擇 start-up disk 導航 資料夾 CoreOS ISO 繼續
Configuring Container Linux
Start CoreOS ISO Container Linux 開始 載入 看到 line 給 CoreOS version 和 command line:
core@localhost
輸入:
sudo openssl passwd -1 > cloud-config-file
Command line 警告 can't open config file 密碼 繼續 然後輸入:
cat cloud-config-file
返回 long string 創建 新 cloud-config file 開 cloud-config visual editor:
vi cloud-config-file
載入 cloud-config file 編輯 CoreOS 先進 cloud-config example file:
我的 像:
#cloud-config
users: moe
passwd: [SSL password]
groups:
- sudo
- docker
檢查 cloud-config file:
cat cloud-config-file
返回 config file 好 繼續 安裝 CoreOS:
sudo coreos-install -d /dev/sda -C stable -c cloud-config-file
看到 訊息 CoreOS downloading, writing, verifying 完成 訊息 "Success! CoreOS [version] installed on /dev/sda."
Shutdown CoreOS VM 然後 start 回來 起動 時 確保 unmount CoreOS ISO 不然 live CD 跑 又
CoreOS 載入 login prompt command line:
localhost login:
輸入 username/password 載入 "Container Linux by CoreOS [version]" 和 fresh command line
Hands-On Container Linux: Next Steps
Container Linux by CoreOS 安裝 好 開始 設置 containers 和 clusters CoreOS documentation 絕佳 quickstart guide 信息 service discovery 用 etcd 和 container management Docker 我 做 quick tests: "Hello World" Docker pull 安裝 Plex Docker image 因為 我 大 media server buff 最後 設置 fleet cluster management
第一 要 做 配置 主要 components Container Linux:
- etcd
- Docker
- Fleet
配置 三 基礎 準備 service discovery, cluster management, 設置 containers 然後 開始 containerizing apps 和 安全 測試 desktop apps 在 secure Docker container
Hands-On Container Linux: Final Thoughts
我不 常 用 containers 但 Container Linux 簡化 deployment Documentation 絕佳 有 sample config files 註: beginners 幾個 unofficial video installation tutorials 使 CoreOS installs 容易 CoreOS 聲稱 Container Linux 輕量 我 最初 skeptical 但 我 spun up Container Linux VM 低 resource consumption 因為 我 想 測試 真輕量 用 aging HP laptop 沒 問題
但 幾 步驟 初始 安裝 不 很 "beginner friendly" 安裝/設置 Container Linux 需要 robust Linux familiarity 註: 我 沒 試 CoreUpdate dashboard CoreOS 付費 premium feature 我 沒 問題 用 command line 但 graphical environment monitoring 會 不錯 addition
System admins 和 database admins 受益 最多 Container Linux 但 home servers 簡單 輕量 創建 clustered environment 而且 Container Linux 可以 spin up cluster 從 single machine 但 Container Linux 絕佳 介紹 做 containers 如果 學 更多 Docker 和 containers Container Linux 運行 很好 VM 給 所有 resources 開始
優秀 out-of-the-box solution Container novices 此外 seasoned DevOps engineers, sysadmins, database admins 終究 Container Linux by CoreOS 簡單 創建 scalable, efficient, containerized environment
你 用 CoreOS? 計劃 用? 讓 我們 知道 你 如何 containerizing Linux 在 comments!