Introduction to Canonical Multipass
Tags: containers, virtualization, multipass, canonical
Published: 2020-11-28 02:19:43

**Containers** have taken the world by the storm. Be it the application containers such as *Docker* or *Rocket*, or the operating system containers such as *OpenVZ*, *LXC/LXD* or *Multipass*.

I have always found containers pretty fascinating. The reason being that they provide with a neat & clean interface to start with and once you are done, all the mess can be cleaned up as if it was never there.

In this post we will have a look at [Multipass](https://multipass.run), which is an operating system containerzation technology by [Canonical](https://canonical.com), the company behind [Ubuntu](https://ubuntu.com). Multipass is available for Windows, Mac & Linux. For the insallation instruction for your particular operating system, please see 
- For Linux, click [here](https://multipass.run/docs/installing-on-linux)
- For Mac, click [here](https://multipass.run/docs/installing-on-macos)
- For Windows, click [here](https://multipass.run/docs/installing-on-windows)

> NOTE: If you are running _Windows Professional_, then Multipass can use the built-in Hyper-V technology. Alternatively you will have to install Oracle Virtualbox separately, to use Multipass.

Lets dive into how to use Multipass.

The simplest way to launch an Ubuntu VM is

```
PS C:\Users\visha> multipass launch
Launched: wise-llama
PS C:\Users\visha> multipass list
Name            State         IPv4         Image
wise-llama      Running       N/A          Ubuntu 20.04 LTS
PS C:\Users\visha>
```

The will create an Ubuntu vm with the latest LTS version. Now whenever a new VM is created, of course some resources (RAM, CPU, Disk space etc) will be allocated. To list them out

```
PS C:\Users\visha> multipass info wise-llama
Name:           wise-llama
State:          Running
IPv4:           N/A
Release:        Ubuntu 20.04.1 LTS
Image hash:     69138d4bbf4f (Ubuntu 20.04 LTS)
Load:           0.00 0.04 0.05
Disk usage:     1.2G out of 4.7G
Memory usage:   125.3M out of 981.3M
PS C:\Users\visha>
```

By default, _1_ CPU, _1 GB_ of RAM & _5 GB_ of disk space is allocated. This can be changed by passing parameters when launching the VM. To know about the paramters

```
PS C:\Users\visha> multipass help launch
```

This will output all parameters which can be passed to _multipass launch_. Lets launch an Ubuntu VM with custom configuration.

```
multipass launch -v -c 2 -d 10G -m 2G -n bionic 18.04
```

Once the VM has been created, we can issue a command to it from the host machine directly.

```
PS C:\Users\visha> multipass exec bionic -- lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:        18.04
Codename:       bionic
PS C:\Users\visha>
```

Alternatively, we can get direct access to shell inside the VM.

```
PS C:\Users\visha> multipass shell bionic
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-124-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Nov 28 06:06:54 +04 2020

  System load:  0.17              Processes:             84
  Usage of /:   22.1% of 4.67GB   Users logged in:       0
  Memory usage: 11%               IP address for enp0s3: 10.0.2.15
  Swap usage:   0%


0 packages can be updated.
0 updates are security updates.

New release '20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@bionic:~$
```

Now we are inside of the ubuntu bionic instanace. You can use this like any other ubuntu instance. Once we are done, then we can stop the running instance(s) so that the allocated RAM & CPU becomes free and goes back to the host machine. But since we have just stopped the VM, hence the disk space is still occupied. In order to recover the disk space, the VM must be deleted & purged.

```
multipass delete <vm-nam>
multipass purge
```

For the full list of commands supported by multipass, just run multipass without any arguments. To know more about a specific command run - _multipass help \<command\>_

```
PS C:\Users\visha> multipass
Usage: Program Files\Multipass\bin\multipass.exe [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 the 'v' in the short option for more detail. Maximum verbosity is obtained with 4 (or more) v's, i.e. -vvvv.

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
PS C:\Users\visha>
```

That will be all folks!!

> For the case where Multipass is using VirtualBox, you need to download [PSExec](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec) and the use the command
```
PS> & $env:USERPROFILE\Downloads\PSTools\PsExec.exe -s -i $env:VBOX_MSI_INSTALL_PATH\VirtualBox.exe
```