linux - 是否有任何操作系统虚拟化而无需安装完整的操作系统(需要多个类似的虚拟机)?

标签 linux virtual-machine hyper-v

我想要一个单独的虚拟化操作系统环境(最好是 Windows,但也欢迎 Linux),但在非常小的 RAM 上运行来运行机器人应用程序。 我已经尝试过 Hyper-V(具有磁盘差异)和 VMware(具有链接/即时克隆)以及 Virtualbox 和 qemu,但到目前为止它们需要完整的操作系统安装,并且会占用如此多的空间。

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

我尝试使用一张定制的 Lubuntu livecd 和 WINPE live CD(Gandalf 的 WINPE 7)在多个 Hyper-V 虚拟机上启动。它们启动得很好,但 Gandalf 的 WINPE 不是完整的 Windows,需要较高的 RAM 使用率,而在 Linux 端,我无法在 WINE 下很好地运行我的 Windows 脚本 + 应用程序,尽管 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 VM 中启动基本实时 ISO。然而,它们是 RAM 密集型的,只能部署几个单独的环境。

更多信息+发现:

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

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

LXD/LXC 可以配置为虚拟化桌面,但不完全是我想要的,因为这意味着我必须双启动/拥有 Ubuntu 虚拟机。

Docker 最近刚刚实现了 Windows 容器,但基础镜像是无 GUI 的。然而,在 Linux 方面,有相当多的可用镜像已配置了最低限度的桌面环境。

此外,使用 Docker,我不需要运行 Ubuntu/FreeBSD 的虚拟机来设置 lxd/lxc/jails 或双引导 Linux/FreeBSD。另一个优点是,Docker 是跨平台的(可以在 Windows/Linux/MacO 中使用)。

tldr; Docker 太棒了。

关于linux - 是否有任何操作系统虚拟化而无需安装完整的操作系统(需要多个类似的虚拟机)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693862/

相关文章:

java - 我们如何在cloudsim中创建具有不同MIPS数量的Vm?

powershell - docker机器在创建时卡住了

Windows 使用 --network=host 运行 docker 并使用 127.0.0.1 访问

c# - 使用 C# 中的 powershell cmdlet 重启 Hyper V 机器

linux - 使用 shell 脚本替换文件中的标记

mysql - 我如何找出 isql 使用的 mysql odbc 驱动程序的版本

linux - 为什么shell脚本文件执行不了。Linux告诉我文件不存在

linux - 如何在emacs中bash终端的 "line run"模式下输入EOF?

linux - 我无法从 Windows 主机访问在 VM 上运行的 Django 服务器

找不到 Vagrant 框错误