📝

Multipassコマンドメモ

2022/02/15に公開

はじめに

Multipassのコマンドメモです。
オフィシャルを見ましょう。

動作確認環境

  • MacBook Pro 13-inch, 2018
  • macOS Big Sur 11.6.3
  • Homebrew導入済み
  • multipass 1.8.1+mac / multipassd 1.8.1+mac

インストール

Installing Multipass on macOS | Multipass documentation

brewコマンドでMultipassをインストールする。
バックエンドはhyperkitのまま使用する。[1]

% brew install --cask multipass

メニューバー

インストール後に再起動するとメニューバーにMulltipassが常駐する。[2]
仮想環境の開始、終了、シェルオープンなどができる。

操作用メニュー

仮想環境の操作

イメージ

`multipass find` command | Multipass documentation

使用できるイメージの一覧を表示する。

% multipass find
Image                       Aliases           Version          Description
18.04                       bionic            20220131         Ubuntu 18.04 LTS
20.04                       focal,lts         20220207         Ubuntu 20.04 LTS
21.10                       impish            20220201         Ubuntu 21.10
anbox-cloud-appliance                         latest           Anbox Cloud Appliance
charm-dev                                     latest           A development and testing environment for charmers
docker                                        latest           A Docker environment with Portainer and related tools
minikube                                      latest           minikube is local Kubernetess

作成

cloud-initで設定をしてVMを作成する。
各種設定、ユーザー、インストールパッケージ、コマンドの実行などを行える。
例では「~/cloud-config.yaml」に作成する。

cloud-config.yaml
% cat > ./cloud-config.yaml << _EOF_
#cloud-config

locale: en_US.UTF8
timezone: Asia/Tokyo

users:
  - name: ubuntu
    sudo: ALL=(ALL) NOPASSWD:ALL

package_upgrade: true

packages:
  - curl
  - zip
  - jq

runcmd:
  - apt-get -y update
  - apt-get -yV upgrade
  - [systemctl, daemon-reload]
_EOF_

`multipass launch` command | Multipass documentation

vmという名前で、CPU2個、メモリ4GB、ディスク20GBのマシンにUbuntu20.04をインストールする。
「cloud-config.yaml」に合わせてセットアップする。

% multipass launch --name vm --cpus 2 --mem 4G --disk 20G --cloud-init cloud-config.yaml 20.04
# 初期化処理が行われる。時間がかかる。
% Launched: vm
# 作成後起動状態になっている
% multipass list
Name                    State             IPv4             Image
vm                      Running           192.168.64.5     Ubuntu 20.04 LTS

とりあえず起動してみたい場合は以下のようにすることもできる。

% multipass launch

ログイン

`multipass shell` command | Multipass documentation

仮想環境内にログインする。

% multipass shell vm
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-99-generic x86_64)

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

  System information as of Tue Feb 15 12:42:56 JST 2022

  System load:  0.0               Processes:               127
  Usage of /:   8.0% of 19.21GB   Users logged in:         0
  Memory usage: 4%                IPv4 address for enp0s2: 192.168.64.5
  Swap usage:   0%


0 updates can be applied immediately.


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

ubuntu@vm:~$ 

起動

`multipass start` command | Multipass documentation

仮想環境を起動する。

% multipass start vm
# 実行待ち。時間がかかる。
% multipass list      
Name                    State             IPv4             Image
vm                      Running           192.168.64.5     Ubuntu 20.04 LTS

停止

`multipass stop` command | Multipass documentation

仮想環境を停止する。

% multipass stop vm
# 停止待ち。時間がかかる。
% multipass list     
Name                    State             IPv4             Image
vm                      Stopped           --               Ubuntu 20.04 LTS

削除

Deleting the instance - Working with Multipass instances | Multipass documentation

仮想環境を削除する。
deleteコマンドでゴミ箱に入れる。
purgeコマンドでゴミ箱を空にする。

% multipass delete vm
% multipass list       
Name                    State             IPv4             Image
vm                      Deleted           --               Not Available
% multipass purge
% multipass list   
No instances found.

recoverコマンドでゴミ箱から取り出せる。

% multipass delete vm
% multipass list
Name                    State             IPv4             Image
vm                      Deleted           --               Not Available
% multipass recover vm
% multipass list        
Name                    State             IPv4             Image
vm                      Stopped           --               Ubuntu 20.04 LTS

仮想環境の情報

一覧

`multipass list` command | Multipass documentation

仮想環境の一覧を表示する。

% multipass list
Name                    State             IPv4             Image
vm                      Stopped           --               Ubuntu 20.04 LTS
vm2                     Running           192.168.64.6     Ubuntu 20.04 LTS

lsでも一覧を表示する。

% multipass ls
Name                    State             IPv4             Image
vm                      Stopped           --               Ubuntu 20.04 LTS
vm2                     Running           192.168.64.6     Ubuntu 20.04 LTS

詳細表示

`multipass info` command | Multipass documentation

仮想環境の情報を表示する。

% multipass info vm 
Name:           vm
State:          Running
IPv4:           192.168.64.5
Release:        Ubuntu 20.04.3 LTS
Image hash:     3d7282d3e92b (Ubuntu 20.04 LTS)
Load:           0.25 0.06 0.02
Disk usage:     1.5G out of 19.2G
Memory usage:   145.4M out of 3.8G
Mounts:         --

「--format」オプション指定で「json」や「yaml」で出力ができる。

multipass info --format json vm
% multipass info --format json vm
{
    "errors": [
    ],
    "info": {
        "vm": {
            "disks": {
                "sda1": {
                    "total": "20629221376",
                    "used": "1645203456"
                }
            },
            "image_hash": "3d7282d3e92bd2547db9d26590f4a951cead31a10a6470b18ef0848f83db2051",
            "image_release": "20.04 LTS",
            "ipv4": [
                "192.168.64.5"
            ],
            "load": [
                0.96,
                0.27,
                0.1
            ],
            "memory": {
                "total": 4122816512,
                "used": 151633920
            },
            "mounts": {
            },
            "release": "Ubuntu 20.04.3 LTS",
            "state": "Running"
        }
    }
}
multipass info --format yaml vm
% multipass info --format yaml vm
errors:
  - ~
vm:
  - state: Running
    image_hash: 3d7282d3e92bd2547db9d26590f4a951cead31a10a6470b18ef0848f83db2051
    image_release: 20.04 LTS
    release: Ubuntu 20.04.3 LTS
    load:
      - 0.46
      - 0.35
      - 0.14
    disks:
      - sda1:
          used: 1645207552
          total: 20629221376
    memory:
      usage: 152186880
      total: 4122816512
    ipv4:
      - 192.168.64.5
    mounts: ~

仮想環境とファイル共有

Sharing data with the instance - Working with Multipass instances | Multipass documentation

マウント

ホームをマウントする。

% multipass mount $HOME vm
% multipass info vm
Name:           vm
State:          Running
IPv4:           192.168.64.5
Release:        Ubuntu 20.04.3 LTS
Image hash:     3d7282d3e92b (Ubuntu 20.04 LTS)
Load:           0.07 0.02 0.00
Disk usage:     1.5G out of 19.2G
Memory usage:   166.2M out of 3.8G
Mounts:         /Users/hoge => /Users/hoge
                    UID map: 501:default
                    GID map: 20:default

mac側の「~/ubuntu」をUbuntuの「~/ubuntu」にマウントする。
初回テスト用にフォルダーとファイルを作成する。

% mkdir ~/ubuntu
% touch ~/ubuntu/hogehoge 
% multipass shell vm
ubuntu@vm:~$ mkdir ubuntu
ubuntu@vm:~$ exit

「~/ubuntu」をマウントする。

% multipass mount ~/ubuntu vm:~/ubuntu 
% multipass info vm
Name:           vm
State:          Running
IPv4:           192.168.64.5
Release:        Ubuntu 20.04.3 LTS
Image hash:     3d7282d3e92b (Ubuntu 20.04 LTS)
Load:           0.06 0.12 0.05
Disk usage:     1.5G out of 19.2G
Memory usage:   163.3M out of 3.8G
Mounts:         /Users/hoge/ubuntu => ~/ubuntu
                    UID map: 501:default
                    GID map: 20:default
% multipass shell vm
ubuntu@vm:~$ ls ubuntu/
hogehoge

アンマウント

すべてアンマウントする。

% multipass umount vm
% multipass info vm
Name:           vm
State:          Running
IPv4:           192.168.64.5
Release:        Ubuntu 20.04.3 LTS
Image hash:     3d7282d3e92b (Ubuntu 20.04 LTS)
Load:           0.00 0.00 0.00
Disk usage:     1.5G out of 19.2G
Memory usage:   158.8M out of 3.8G
Mounts:         --

参考にしたサイト

脚注
  1. 設定でvirtualboxに変更できる ↩︎

  2. About→Autostart on loginのチェックを外すと常駐解除される ↩︎

Discussion