是否有任何 os 虚拟化而无需安装完整的 OS(需要多个类似的虚拟机)?

Is there any os virtualization without having to install a full OS (needed multiple similar vms)?

我想要一个单独的虚拟化 OS 环境(最好是 Windows,但 Linux 也很受欢迎)但是 运行 在非常小的 RAM 上 运行 一个机器人应用程序。 我已经尝试过 Hyper-V(有磁盘差异)和 VMware(有 linked/instant 克隆)和 Virtualbox 和 qemu 但到目前为止他们需要完整的 OS 安装并且它可以占用这么多 space .

基本上我只需要多个类似的环境(接近 100 个)而没有大硬盘 space 我 运行 本地网络文件夹中的所有应用程序。 (类似于多个虚拟机 运行ning 在一个 vhd 下,但我不想占用那么多硬盘 spaces)

我试过使用一个定制的 Lubuntu livecd 和 WINPE live cd(Gandalf 的 WINPE 7)在多个 Hyper-V 虚拟机上启动。他们启动得很好,但 Gandalf 的 WINPE 不是完整的 windows 并且需要高 RAM 使用率,而在 Linux 方面我不能 运行 我的 windows 脚本 + 应用程序虽然在 WINE 下很好Linux 内存管理好多了,如果需要的话,我仍然可以使用像 Damn Small 这样小得多的发行版 Linux。

我检查了 Microsoft 的 App-V,但它只是虚拟化了应用程序,没有设置新的独立环境。我需要一个带有自己的鼠标指针的新环境,但需要非常小的 RAM,最好只用于 运行 连接机器人和应用程序。

谢谢。

我已经尝试过 FreeBSD Jail、LXC、LXD,但无法按照我想要的方式进行(拥有一台 PC 和多个用户,但占地面积最小)。

但是,我很高兴我找到了解决方案并想分享它。

For Windows host machine + Linux guest

  1. Enable Hyper-V in Windows (if supported) or download VirtualBox

  2. Install Docker for Windows

  3. Install RealVNC (or any other VNC client)

  4. Download (pull) or create any linux docker image with desktop environment + VNC (optional: wine, winetricks, playonlinux for running windows apps + cimb-utils [it is for smb sharing network folder])

  5. In powershell deploy multiple container using same image + assign each different vnc port, for example :

    For VNC + Samba network sharing + vncpassword

    • docker run -it --user 0 -d -p 5900:5900 -e VNC_PW=passwd --privileged --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH --security-opt seccomp=unconfined ubuntu

    For only VNC without vncpassword (depends on container)

    • docker run -d -p 5900:5900 abrahamb/lubuntu-vnc

    • docker run -d -p 5901:5900 abrahamb/lubuntu-vnc

    • docker run -d -p 5902:5900 abrahamb/lubuntu-vnc

    • etc

  6. Open RealVNC and setup a connection to these addresses; for example :

    • localhost:5900

    • localhost:5901

    • localhost:5902

    • etc
  7. Each ports will lead to separate containerised desktops

这样,您将拥有一个用于部署多个容器的基础映像(例如让一台计算机同时拥有多个用户 运行),只需要最少的 RAM 使用和磁盘大小。 另一种方法是在多个 Hyper-V 虚拟机中启动基本实时 iso。但是,它们是 RAM 密集型的,只能部署几个单独的环境。

更多信息+调查结果:

Docker 实际上有点类似于 LXC、LXD 和 FreeBSD Jails,因为它们都是容器化镜像。我相信如果我足够努力,我可以在 LXD 中进行类似的设置。 FreeBSD Jails 可能也是一个不错的选择。

但是,我没有进一步尝试,因为我找不到足够的关于 jails 设置的信息。我找不到任何解释如何设置的 Youtube 视频,只有一些 articles/blog 但仍然太令人沮丧,因为我没有足够的时间进一步研究。

LXD/LXC 可以配置为虚拟化桌面,但不是我想要的,因为那意味着我必须 dual-boot/have Ubuntu vm.

Docker 最近刚刚实施 Windows 容器,但基本图像是无 GUI 的。然而,在 Linux 方面,有相当多的可用图像已经配置了最小的桌面环境。

此外,使用 Docker,我不需要 运行 Ubuntu/FreeBSD 的 VM 来设置 lxd/lxc/jails 或双启动 Linux/FreeBSD。另外,Docker是跨平台(可以在Windows/Linux/MacOs中使用)。

tldr; Docker 太棒了。