There are multitude of programs and tools available for deploying Ubuntu VMs for testing and learning purposes. Some of them are Docker, LXD, LXC, Proxmox, VirtualBox and Vmware etc. I use Virtualbox often for testing various applications on multiple Linux distributions. Today, we are going to learn about yet another utility named Multipass. Whether you are a regular user or developer or system admin, you can create and launch Ubuntu VMs with Multipass instantly in a matter of seconds in Linux.
Multipass is a command line utility developed by Canonical team, for quickly deploying Ubuntu instances on your local machine. Since Multipass get you the up-to-date instances, you don't have to waste time on updates on launch! Using Multipass, you can launch Ubuntu VMs and use them for testing your code or application. You can run commands in VMs directly from your local host or log into the VM's shell and run from there. It is also possible to mount a directory of your host system into the instances and share files and folders between the host system and VMs. Multipass supports GNU/Linux, Mac OS and Windows.
Install Multipass On Linux
Multipass is available as snap package, so it can be installed on any Linux operating systems that supports snapd. Snap comes pre-installed in all Ubuntu releases starting from version 16.04 LTS, Ubuntu flavours, Solus 3 and above, Zorin OS etc. On other Linux systems, you can install Snapd as described in this link.
After installing Snapd, install Multipass using command:
$ sudo snap install multipass --classic
Upon successful Multipass installation, you will see the following output:
multipass 1.0.2 from Canonical* installed
Now let us go ahead and deploy Ubuntu instances in our local system.
Create And Launch Ubuntu VMs With Multipass On Linux
Running Ubuntu VMs with Multipass is incredibly easy and straight-forward.
Launch Ubuntu VMs
To download and launch a fresh Ubuntu VM, simply run:
$ multipass launch --name ostechnix-instance
$ multipass launch -n ostechnix-instance
Here ostechnix-instance is the name of my Ubuntu VM. You can name the VMs as per your liking.
The above command will download a fresh and minimal Ubuntu instance and start it automatically.
By default, Multipass will download the current Ubuntu LTS version.
To list the currently downloaded VMs on your system, run:
$ multipass list
Name State IPv4 Image ostechnix-instance Running 10.39.86.203 Ubuntu 18.04 LTS
As you can see in the above output, a new Ubuntu instance named "ostechnix-instance" is launched and is running with Ubuntu 18.04 LTS version. And the IP address of the instance is 10.39.86.203.
Execute commands in VMs from local system
Multipass allows you to run commands inside your Ubuntu instances. For example, we can find the system details of a running VM using command:
$ multipass exec ostechnix-instance -- lsb_release -a
Launch Ubuntu VM's shell
Instead of running commands from your local system to Ubuntu VM, you can directly launch its SHELL and run the commands or do any testing as you please.
$ multipass shell ostechnix-instance
Type "exit" to log out from the instance.
Find available instances to launch
As I already said, Multipass will get you the current LTS version, which is Ubuntu 18.04. You can, however, launch other available VMs if you want to.
To list all available VMs, run:
$ multipass find
Image Aliases Version Description snapcraft:core core16 20200221 Snapcraft builder for Core 16 snapcraft:core18 20200221 Snapcraft builder for Core 18 core core16 20200213 Ubuntu Core 16 core18 20200210 Ubuntu Core 18 16.04 xenial 20200218.1 Ubuntu 16.04 LTS 18.04 bionic,lts 20200218 Ubuntu 18.04 LTS 19.10 eoan 20200129 Ubuntu 19.10 daily:20.04 devel,focal 20200226 Ubuntu 20.04 LTS
As you see, Snapcraft core, Ubuntu core, Ubuntu 16.04, 18.04, 19.10 and 20.04 daily build are available.
To launch any other instances, specify the image name like below.
$ multipass launch --name ostechnix-instance 19.10
This command will launch an instance running with Ubuntu 19.10.
Create instances with custom specifications (Number of CPUs, hard disk size, and memory size)
By default, Multipass will create Ubuntu VMs with 1 CPU, 5GB hard disk and 1GB RAM. This is enough for basic testing. However, some times you might want to create a VM with lower or higher configuration than the default. It is also possible!
The following command will spin up a VM with 2 CPUs, 2 GB RAM and 20 GB hard disk size.
$ multipass launch -c 2 -m 2G -d 20G -n ostechnix-instance
The size can be specified with suffix K (for KB), M (for MB), G (for GB).
- Minimum number of allowed CPUs: 1
- Minimum allowed Hard disk size: 512 MB
- Minimum allowed Memory size: 128 MB
Find information of the running instances
The information about the running instances can be viewed by the following command:
$ multipass info ostechnix-instance Name: ostechnix-instance State: Running IPv4: 10.39.86.203 Release: Ubuntu 18.04.4 LTS Image hash: 3c3a67a14257 (Ubuntu 18.04 LTS) Load: 0.08 0.02 0.01 Disk usage: 999.1M out of 4.7G Memory usage: 74.0M out of 985.1M
To suspend a running instance, run:
$ multipass suspend ostechnix-instance
Verify if it is suspended or not using info command:
$ multipass info ostechnix-instance Name: ostechnix-instance State: Suspended IPv4: -- Release: -- Image hash: 3c3a67a14257 (Ubuntu 18.04 LTS) Load: -- Disk usage: -- Memory usage: --
As you can see, my ostechnix-instance is suspended.
Starting and stopping instances
To stop a running VM, run:
$ multipass stop ostechnix-instance
To start the VM:
$ multipass stop ostechnix-instance
Manage Ubuntu VMs from Multipass tray icon
If you are not comfortable with Multipass command line options, you can manager VMs from the Multipass tray icon.
Launch Multipass GUI from your host system's menu or dash. You will then see the Multipass icon on your system tray.
From the multipass tray icon, you can:
- Start/stop VMs,
- Open shell access of the running VMs,
- Disable/enable Multipass autostart option,
- Quit Multipass.
Once you are done with your Ubuntu instances, you can delete them if they are no longer required.
First stop the VM that you want to delete.
$ multipass stop ostechnix-instance
Then, delete it from your local host using commands:
$ multipass delete ostechnix-instance
$ multipass purge
Run the following command to view the list of available options and sub-commands along with description.
$ multipass help
Usage: multipass [options] <command> Create, control and connect to Ubuntu instances. This is a command line utility for multipass, a service that manages Ubuntu instances. Options: -h, --help Display this help -v, --verbose Increase logging verbosity, repeat up to three times for more detail Available commands: delete Delete instances exec Run a command on an instance find Display available images to create instances from get Get a configuration setting help Display help about a command info Display information about instances launch Create and start an Ubuntu instance list List all available instances mount Mount a local directory in the instance purge Purge all deleted instances permanently recover Recover deleted instances restart Restart instances set Set a configuration setting shell Open a shell on a running instance start Start instances stop Stop running instances suspend Suspend running instances transfer Transfer files between the host and instances umount Unmount a directory from an instance version Show version details
To view the help section for each sub-command:
$ multipass help <sub-command>
$ multipass help launch