docker、LXC、LXD的區(qū)別及傳統(tǒng)的虛擬機(jī)與操作系統(tǒng)虛擬化詳解
1. 概念解釋
1.1. Docker
Docker是一個用于在集中式平臺上創(chuàng)建、部署和運(yùn)行應(yīng)用程序的開源工具。
這使得主機(jī)的操作系統(tǒng)通過容器運(yùn)行具有相同Linux內(nèi)核的應(yīng)用程序,而不是創(chuàng)建一個完整的虛擬機(jī)。
使用docker容器不需要考慮Ram和磁盤空間的分配。它能夠自己處理這些需求。
Docker只提供了應(yīng)用程序的虛擬化,通過cgroup、namespace實(shí)現(xiàn)資源隔離,資源限制配置參見resource_constraints。
Docker容器將應(yīng)用和其依賴環(huán)境全部打包到一個單一對象中,在不包含完整的操作系統(tǒng)的情況下就能運(yùn)行普通應(yīng)用,更加輕量級,可移植性更好。所以它成為了PaaS(比如Kubernates)平臺的基石
Docker提供的特性:
- Docker is Fast and Easy configurable【快速且易于配置】.
- Technical feasibility and increased productivity.
- Secure services【安全服務(wù)】 through commands like secret inspect and secret create, etc.
- Provides application isolation and no container is dependent on any other.【提供應(yīng)用程序隔離,且容器不依賴于任何其他容器】

1.2. LXC
LXC是Linux容器的縮寫,Linux容器是一種操作系統(tǒng),用于通過單個Linux內(nèi)核在受控主機(jī)上虛擬運(yùn)行多個Linux系統(tǒng)。
LXC與內(nèi)核的cgroup捆綁在一起,為進(jìn)程和網(wǎng)絡(luò)空間提供功能,而不是創(chuàng)建一個完整的虛擬機(jī),并為應(yīng)用程序提供一個隔離的環(huán)境。
LXC代表Linux容器,它是一種用于操作系統(tǒng)虛擬化的工具。通過使用LXC,可以在虛擬環(huán)境中而不是在物理系統(tǒng)中操作任何軟件或應(yīng)用程序。虛擬環(huán)境功能使LXC更加安全,成本也更低。LXC很容易操作,因為它帶有控制組【Control groups Cgroups】功能。
LXC為提供了完整的操作系統(tǒng)虛擬化,
操作系統(tǒng)級虛擬化是一種服務(wù)器虛擬化方法,在這種方法中,操作系統(tǒng)的內(nèi)核允許存在多個孤立且隔離的用戶空間實(shí)例,而不是只有一個
LCX就是一種輕量級虛擬化,將linux進(jìn)程沙盒化,使用的是linux中的namespace技術(shù)進(jìn)行資源隔離,
- pid namespace隔離了進(jìn)程,
- mount namespace隔離了文件系統(tǒng),
- network namespace隔離了網(wǎng)絡(luò)
LXC提供的特性:
- 它提供了內(nèi)核名稱空間【Kernel namespaces】,如IPC、掛載【mount】、PID、網(wǎng)絡(luò)和用戶。
- 它提供了內(nèi)核功能【Kernel capabilities】。
- Control groups (Cgroups).
- Seccomp profiles

1.3. LXD
LXD代表Linux Daemon,它是一個擴(kuò)展,主要用于指導(dǎo)LXC。
它用于向LXC提供新的屬性和功能,以便以更有效的方式使用LXC。
LXD和LXC之間的通信是通過使用內(nèi)置庫完成的,liblxc就是這樣一個庫。
2. 區(qū)別
2.1. docker與LXC/LXD容器的區(qū)別
- LXD/LXC是一個系統(tǒng)級容器。Docker是一個應(yīng)用程序容器,
- LXC不能跨機(jī)器上進(jìn)行移植,而Docker可以跨機(jī)器甚至跨平臺移植。
| 比較點(diǎn) | LXC | Docker |
|---|---|---|
| Developed by | LXC was created by IBM, Virtuozzo, Google and Eric Biederman. | Docker was created by Solomon Hykes in 2003. |
| Data Retrieval | LXC does not support data retrieval after it is processed. | Data retrieval is supported in Docker. |
| Usability | It is a multi-purpose solution for virtualization. | It is single purpose solution. |
| Platform | LXC is supported only on Linux platform. | Docker is platform dependent. |
| Virtualization | LXC provides us full system virtualization. | Docker provides application virtualization. |
| Cloud support | There is no need for cloud storage as Linux provides each feature. | The need of cloud storage is required for a sizeable ecosystem. |
| Popularity | Due to some constraints LXC is not much popular among the developers. | Docker is popular due to containers and it took containers to a next level. |
| Speed Of Deployment | LXC is not lightweight and consumes a lot of time . | Docker Containers are lightweight and fast. |

2.2. LXC與LXD區(qū)別
- LXD可以看作是LXC的升級版。LXD的管理命令和LXC的管理命令大多相同。
- LXC起源于cgroup和namespaces,使得進(jìn)程之間相互隔離,即進(jìn)程虛擬化。
- LXC有一些缺點(diǎn),比如無法有效支持跨主機(jī)之間的容器遷移、管理復(fù)雜。而LXD很好地解決了這些問題。
- LXC/LXD和docker不同的地方在于LXC/LXD中包含完整的操作系統(tǒng)。
| LXC | LXD |
|---|---|
| LXC is a virtual environment creation tool, it was built by Google, IBM etc. | LXD is an add on for the LXC to provide advanced features and functionalities. |
| Multiple processes are needed for multiple containers and hence it is not flexible. | LXD makes it flexible by providing a single process for multiple containers. |
| Snapshots, Live Migration【快照和動態(tài)遷移】 etc are some of the features which are not supported by LXC. | LXD supports snapshots and lives migration features. |
| Scalability functionality is not provided by LXC and hence users shift to other virtual solutions. | With the use of LXD, scalability is achieved in LXC. |
| Management capabilities are poor, especially in the case of network and storage. | It has better management capabilities like storage pooling. |
| It is not user friendly and needs the expertise to handle the processes. | It provides a user-friendly interface. |
| After data processing, the data cannot be retrieved. | Data retrieval functionality after data processing is provided in LXD. |
| C API is used by the LXC. | LXD uses REST API. |
2.3. 傳統(tǒng)的虛擬機(jī)與操作系統(tǒng)虛擬化的區(qū)別
- 傳統(tǒng)的虛擬機(jī)使用了一種叫做hypervisor的東西,它運(yùn)行在內(nèi)核之上,該管理程序通過監(jiān)視其資源使用情況和訪問模式,為在其上運(yùn)行的應(yīng)用程序提供虛擬化。這會導(dǎo)致大量開銷,導(dǎo)致不必要的性能損失。
- 操作系統(tǒng)級虛擬化的工作方式不同。它使用namespace和cgroup來限制應(yīng)用程序的功能,包括資源的使用,這是linux內(nèi)核提供的一個特性,幾乎沒有開銷。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Docker Run命令快速部署 Apache WebDAV 服務(wù)
本文介紹如何使用docker run命令快速部署 Apache WebDAV 服務(wù),并完成基本配置和訪問驗證,感興趣的朋友跟隨小編一起看看吧2026-03-03
Docker?Compose從入門到實(shí)踐的完全指南
Docker?Compose?是一個用于定義和運(yùn)行多容器?Docker?應(yīng)用程序的工具,通過一個?YAML?文件來配置應(yīng)用的服務(wù),只需簡單命令就能創(chuàng)建和啟動所有服務(wù),下面就跟隨小編一起來看看它的具體使用吧2025-05-05
綁定Dokcer容器到主機(jī)指定網(wǎng)卡的方法
這篇文章主要介紹了綁定 Dokcer 容器到主機(jī)指定網(wǎng)卡的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
Docker構(gòu)建ELK Docker集群日志收集系統(tǒng)
為了在Docker集群中更好的管理查看日志 我們使用Docker 來搭建集群的ELK日志收集系統(tǒng),這篇文章介紹了Docker構(gòu)建ELK Docker集群日志收集系統(tǒng)的相關(guān)資料,需要的朋友可以參考下2016-11-11
Docker使用nodejs鏡像構(gòu)建express服務(wù)的方法
這篇文章主要介紹了Docker使用nodejs鏡像構(gòu)建express服務(wù),主要包括nodejs容器的啟動,安裝nodejs第三方依賴模塊及啟動nodejs服務(wù)的相關(guān)操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
詳解使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像
本篇文章主要介紹了使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像,具有一定的參考價值,有興趣的可以了解一下。2016-12-12
解決docker網(wǎng)絡(luò)錯誤(network bridge not found)
這篇文章主要介紹了解決docker網(wǎng)絡(luò)錯誤(network bridge not found)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

