在嵌入式世界中,嵌入式開發(fā)人員與云開發(fā)人員在不同的需求和約束下工作。大多數(shù)嵌入式設(shè)備都是固定功能的、單用途的設(shè)計(jì),用于很好地執(zhí)行一件事情,并且經(jīng)常針對(duì)特定功能進(jìn)行定制。由于這種高度的定制,Linux發(fā)行版本身專門包含幫助應(yīng)用程序在設(shè)備上執(zhí)行其功能所必需的模塊和軟件包。
Docker受到云開發(fā)者的歡迎有幾個(gè)原因。他們可以輕松地從Docker
Hub的廣泛生態(tài)系統(tǒng)中托管和下載單個(gè)應(yīng)用程序。除此之外,Docker還使CICD管道的構(gòu)建和管理變得極其簡(jiǎn)單、高效和便攜。另一方面,LXD主要用于操作Linux并需要輕量級(jí)系統(tǒng)級(jí)虛擬化的發(fā)布團(tuán)隊(duì)。
由于Linux容器更適合系統(tǒng)級(jí)的容器化,因此它們非常適合需要便攜式和專用操作系統(tǒng)的設(shè)備。
Linux容器與Docker的比較
1. 虛擬化
Linux容器:LXC提供了完整的系統(tǒng)虛擬化。
Docker:Docker只提供應(yīng)用程序虛擬化。
2. 操作系統(tǒng)支持
Linux容器:提供支持Linux系統(tǒng)核心功能的基本系統(tǒng)環(huán)境。
Docker:在Linux上本機(jī)運(yùn)行,但也支持其他操作系統(tǒng),如Windows和macOS。Docker本機(jī)使用其運(yùn)行的操作系統(tǒng)。
3. 生態(tài)系統(tǒng)和工具
Linux容器:使用系統(tǒng)管理員熟悉的裸機(jī)工具和Linux開源工具進(jìn)行操作。
Linux容器盡可能接近Linux,嵌入式開發(fā)人員可以使用任何其他Linux支持的工具進(jìn)行操作。Docker
Hub是一個(gè)公共映像存儲(chǔ)庫(kù),提供對(duì)流行應(yīng)用程序的訪問。
Docker:Docker由自己的定制工具管理,該工具由主要與Kubernetes合作的大型云本地開源項(xiàng)目社區(qū)支持。
4. 易用性
Linux容器:因?yàn)樗且粋€(gè)純Linux操作系統(tǒng),所以更容易將應(yīng)用程序從一個(gè)Linux系統(tǒng)遷移到另一個(gè)Linux系統(tǒng)。問題更多地在于管理發(fā)行版本身,保持內(nèi)核、模塊和庫(kù)在不同發(fā)行版之間的兼容性。
Docker:Docker擁有強(qiáng)大的生態(tài)系統(tǒng)和龐大的用戶社區(qū),擁有廣泛的追隨者。開始使用和在需要的任何地方部署應(yīng)用程序都很簡(jiǎn)單。
物聯(lián)網(wǎng)項(xiàng)目中Docker和Linux容器的主要優(yōu)勢(shì)
Linux容器的另一個(gè)好處是,大多數(shù)物聯(lián)網(wǎng)發(fā)布團(tuán)隊(duì)都熟悉Linux。Linux是高度可定制的。Linux容器可以幫助控制對(duì)操作系統(tǒng)的任何定制,并使其可移植到網(wǎng)絡(luò)中的所有嵌入式設(shè)備。這使得組織更容易為其物聯(lián)網(wǎng)項(xiàng)目支持DevOps工作流和其他最佳實(shí)踐。
在物聯(lián)網(wǎng)環(huán)境中,幾乎所有設(shè)備都在Linux上運(yùn)行。像LXC這樣更輕量級(jí)的容器允許對(duì)操作系統(tǒng)進(jìn)行更高效的更新。然而,對(duì)于嵌入式開發(fā)人員來(lái)說(shuō),同樣有益的是能夠輕松創(chuàng)建容器化CICD管道,以便向Linux設(shè)備提供應(yīng)用程序和操作系統(tǒng)更新。