Anbox 是一个免费的开源兼容层,旨在允许为 Android 开发的移动应用程序和移动游戏在 GNU / Linux 发行版上运行。 它通过使用 LXC 执行 Android 运行时环境,将 Android 的目录结构重新创建为可安装的循环映像,同时使用本机 Linux 内核来执行应用程序。
Anbox 使用 Linux 命名空间机制(user,pid,uts,net,mount,ipc)在容器中运行完整的 Android 系统,并在任何基于 GNU/Linux 的平台上提供 Android 应用。
容器内的 Android 没有直接访问任何硬件的权限。所有的硬件访问通过主机上的 anbox 守护进程。我们复用基于 QEMU 的模拟器中为 Android 所做的 OpenGL ES 加速渲染的实现。容器内的 Android 系统使用不同的管道与主机系统通信,并通过它们发送所有的硬件访问命令。
一、LXC/LXD: 基于liux操作系统
LXC或Linux容器是基于操作系统的基本操作系统内核的轻量级和可移植操作系统,但同时充当具有自己的文件系
统,进程和TCP/IP堆栈的隔离环境。
因此容器不会再次创建整个操作系统或内核。 并且多个容器共享相同的内核,并且每个容器可以被约束为仅使用
定义数量的资源,例如CPU,内存和 I/O.
它们可以与FreeBSD上的Solaris Zones或Jails进行比较。 由于没有虚拟化开销,因此它们的性能远远优于
虚拟机。
二、XEN:基于cpu硬件指令
XEN: Linux相关的虚拟机管理程序.
三、KVM:基于cpu硬件指令
VirtualBox和VMware将安装在大多数具有x86处理器的计算机上,但KVM要求处理器支持Intel-VT或AMD-VT扩展,并且这些扩展在BIOS中启用。
KVM虚拟化可让您启动不同的完整操作系统种类,甚至非Linux系统。
KVM表示在自己的Linux内核中构建的虚拟化功能。它只是管理程序,即它不是在裸机上运行。
五、LXC容器与市面是其他虚拟机最大的区别:
1.它是基于Linux内核,而不是基于CPU硬件指令集,LXC是一个轻量级的操作系统
2.LXC基于Host机器虚拟的容器,只有一个Host机器的内核;
调用流程是:
--->app
--->lxc容器
--->真正HOST OS(只有宿主HOST一个OS)
--->硬件
3.其他虚拟机则不是,如KVM会在本身的OS里,会虚拟出多个虚拟OS。
调用流程是:
--->app
--->虚拟OS(可以有多个虚拟OS)
--->真正 HOST OS
--->硬件
如下图所示区别: