Multipass is a nice docker like vm platform from Ubuntu. It can configure the vm with cloud-init so you can prototype your cloud launches locally for free.
E.g. Launch an instance (by default you get the current Ubuntu LTS)
$ multipass launch --name foo
You can read more about multipass in the docs.
Primarly it does seem like just another alternative to docker. But then I found one nice little difference, not a resource hog unlike docker and you don't run as root.
Currently to run a GUI application which you just want to try without having to clean up the system, most common approach is create a vm with VirtualBox, VMware Fusion or Parallels. But it can be a time consuming task as it installs everything from scratch.
Getting GUI applications to work on docker is possible configuration. But then, atleast on Mac, Docker is a resource hog.
With multipass I was able to get IntelliJ IDEA with following:
Prerequisites:
- Install Multipass
- Install XQuartz. Also configure XAuthLocation.
echo "XAuthLocation /opt/X11/bin/xauth" >> ~/.ssh/config
Launch a vm with current LTS ubuntu with 4 cores CPU and 4 GB memory
$ multipass launch -n idea -c 4 -m 4G
$ multipass shell idea
$ sudo apt update
$ sudo apt install -y libxrender-dev libxtst6 libxi6 fontconfig
$ cd /tmp
$ curl -L -O https://download.jetbrains.com/idea/ideaIC-2021.1.tar.gz
$ sudo tar -xzf ideaIC-2021.1.tar.gz -C /opt
$ echo 'PATH=/opt/idea-IC-211.6693.111/bin:$PATH' >> ~/.bashrc
$ sudo apt install -y openjdk-11-jdk
You could automate the above with cloud-init. (Currently as of this writing multipass only supports yaml configs)
Now time for the magic part (on the host):
multipass shell internally is just doing a SSH
$ sudo cp '/var/root/Library/Application Support/multipassd/ssh-keys/id_rsa' ~/.ssh/multipass_id_rsa
Save this script to your PATH
$ cat ~/bin/multipass_x_ssh
#!/bin/bash
IP=$(multipass info $1 | grep IPv4 | awk '{ print $2 }')
ssh -X -i ~/.ssh/multipass_id_rsa ubuntu@$IP
Now when I want to run idea, all I have to do is:
$ multipass_x_ssh idea
$ idea.sh