之前有紀錄一個用 Docker 運作包含 SystemD 的 Container。但是用起來還是有點不順手。因為畢竟 Docker 已經針對 Image 作很多特點上的調整,若用來作單純的 OS 操作,其實並不夠方便。
後來發現 Docker 的前身,LXC,雖然功能不及 Docker 豐富,但是其特性恰巧更適合把 Container 當成 OS 來操作。尤其在演練需要設置叢集的軟體時,更值得用 LXC 節省測試環境的資源開銷。
[Update 2019/6/9] LXD(LXC 強化版)的筆記在這:比這一系列更輕易設定~還可以設定多張虛擬網卡環境喔
[Update 2019/9/7] LXD 裡面確認可以運作 Docker Swarm 叢集了,筆記在這。
因此在純 Linux 的操作面跟完整度來說,LXC 比 Docker 是更好用的~(也只有這點贏過 Docker~)
使用 Docker 有很多好處,但不包含:後來發現 Docker 的前身,LXC,雖然功能不及 Docker 豐富,但是其特性恰巧更適合把 Container 當成 OS 來操作。尤其在演練需要設置叢集的軟體時,更值得用 LXC 節省測試環境的資源開銷。
[Update 2019/6/9] LXD(LXC 強化版)的筆記在這:比這一系列更輕易設定~還可以設定多張虛擬網卡環境喔
[Update 2019/9/7] LXD 裡面確認可以運作 Docker Swarm 叢集了,筆記在這。
因此在純 Linux 的操作面跟完整度來說,LXC 比 Docker 是更好用的~(也只有這點贏過 Docker~)
- 作為純粹的軟體演練環境:不太好用
- 打包階段性的環境不太容易
- 不是設計用當成 OS 操作的
- 有 Stateful Container 的需要時,套用 docker 就有點卡卡的:因為 docker 的精神本來就是 Stateless 的 Image,可以快速重生跟漂移的用途
而 LXC 可以:
- 大幅精簡一次演練需要開的 VM,可以在自己的桌機、筆電進行軟體叢集的練習
- 提供近乎完整的 OS 操作環境,尤其是 SystemD 的功能
- 幾乎只是 chroot 搭配整個 OS Tree,方便偷吃步,例如:隨便丟檔案進去,或是隨便打包
- 讓你在 Container 裡面濫用 root 帳號:尤其是使用雲端的 VM 服務時,Contaienr 的 root 密碼給再爛也不怕被攻擊
- 適合 Stateful Container 的用途:例如資料庫服務、或是自己的演練環境(用久了,有感情。。。)
目前有測試過的軟體:PostgreSQL 與其企業版 、從原始碼編譯的 Greenplum、MongoDB、HTTPD、Oracle XE、Zabbix Server、Docker CE Engine 等軟體。其中比較特別的是可以在 LXC 裡面簡易的運行 Docker。然而。。進一步確認與了解後,Docker Swarm 由於會嘗試載入 Kernel Module,因此會有一些問題。K8S 的部份則不確定。
目前主流之一,是利用 Docker Container 分配 NVidia GPU 計算資源,蠻多時候是提供操作環境完主,佈署成微服務的應用比例相較於普通軟體的 Docker 微服務應用還是稍稍低一點。LXC 基本上也是可以作到 GPU 計算資源控制的(另一篇相關的中文教學),不過這不在本次練習範圍。
LXC 在企業環境也有提供解決方案,叫做 LXD,提供類比 Hypervisor 的功能。
以下列出來的是這一系列的筆記,設置迷你演練環境的紀錄。這邊此用的 Host OS 為 CentOS 7,若習慣 Ubuntu 的話,也可以考慮使用;此外,使用 Ubuntu 就可以直接用 LXD 軟體,使用圖形界面管理了~
下面拆成一系列的筆記,用來紀錄設置 LXC 測試環境的步驟。
如果你有以下需要:
- 需要開多 Linux VM 來作軟體的叢集測試、演練
- 需要在自己的筆電、桌機進行演練,不希望開太多 VM 拖慢電腦
- 演練上需要 SystemD 完整的的功能
- 可能還需要多種 OS Distribution 作測試
至於 Docker 的 K8S / Swarm 等 Docker 叢集調度工具,還沒試過,基本上應該是 OK(因為已經測試過 Docker 了)
那你可以依照這幾篇筆記,架設一個迷你的叢集環境來使用。
如果你有以下需要:
- 需要開多 Linux VM 來作軟體的叢集測試、演練
- 需要在自己的筆電、桌機進行演練,不希望開太多 VM 拖慢電腦
- 演練上需要 SystemD 完整的的功能
- 可能還需要多種 OS Distribution 作測試
至於 Docker 的 K8S / Swarm 等 Docker 叢集調度工具,還沒試過,基本上應該是 OK(因為已經測試過 Docker 了)
那你可以依照這幾篇筆記,架設一個迷你的叢集環境來使用。
沒有留言:
張貼留言