Reputation: 111
I wanted to have a separate virtualized OS environment (preferably Windows but Linux is also welcome) but running on a very small RAM to run a bot application. I have tried Hyper-V (with disk differencing) and VMware (with linked/instant clones) and Virtualbox and qemu but so far they need full OS installation and it can take up so much space.
Basically I just needed multiple similar environment (close to 100) without having a big HDD space and I run all the apps from a local network folder. (Similar to multiple vms running under one vhd but I dont want to take up so many HDD spaces)
I have tried using one customised Lubuntu livecd and WINPE live cd (Gandalf's WINPE 7) booting on multiple Hyper-V vms. They boot just fine but Gandalf's WINPE is not a full windows and require a high RAM usage while on Linux side I cant run my windows script + app well under WINE though Linux memory management is much better and I still can use a much smaller distro like Damn Small Linux if need be.
I checked Microsoft's App-V but it just virtualised the app not setting up a new standalone environment. I need a new environment with their own mouse pointer but needing very small RAM preferably just for running the bot and the app.
Thank you.
Upvotes: 1
Views: 513
Reputation: 111
I have tried FreeBSD Jail, LXC, LXD, but unable to make it the way I want it to be (having one PC with multiple users but on a minimal footprint).
However, I am excited that I kind of find the solution and would like to share it.
For Windows host machine + Linux guest
Enable Hyper-V in Windows (if supported) or download VirtualBox
Install Docker for Windows
Install RealVNC (or any other VNC client)
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])
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
Open RealVNC and setup a connection to these addresses; for example :
localhost:5900
localhost:5901
localhost:5902
- etc
Each ports will lead to separate containerised desktops
That way, you will have one base image for deploying multiple containers (like having one computer multiple users running at the same time) only requiring minimal RAM usage and Disk Size. Another way is to boot a base live iso in multiple Hyper-V VMs. However, they are RAM intensive and can only deploy several separate environment.
Further info+findings:
Docker is actually kinda similar to LXC, LXD, and FreeBSD Jails since they are all containerised image. I believe if I try hard enough I can make similar setup in LXD. FreeBSD Jails might be a good alternative too.
However, I didnt try further since I couldnt find enough information regarding jails setup. I couldnt find any Youtube video that explains how to setup, only some articles/blog but still too frustrating since I dont have enough time to research further.
LXD/LXC can be configured to virtualize a desktop but not quite what I am looking for since that would mean I have to dual-boot/have Ubuntu vm.
Docker just recently implement Windows container but the base image is GUI-less. In the Linux side however, there are quite a few available images that have been configured with bare minimal desktop environment.
Also, using Docker, I dont need to have VM that is running Ubuntu/FreeBSD to setup lxd/lxc/jails or dual-booting Linux/FreeBSD. Another plus, Docker is cross-platform (can be used in Windows/Linux/MacOs).
tldr; Docker is awesome.
Upvotes: 2