Ubuntuの仮想環境を構築・管理できる「Multipass」を使ってみた


My Redmine

黒谷です。8月ですね。8月と言えば夏休み。夏休みと言えば朝のラジオ体操、が新型コロナウイルスの影響で私のまわりでは中止しているところが多いようです。私は会社で続けています。だいぶ体が慣れてきました。

Multipassとは

みなさんはMultipassをご存知でしょうか?Multipassは、Ubuntuの仮想環境を構築し管理することができるソフトウェアです。

https://multipass.run/

Redmineのインストール手順を確認するため仮想環境を構築しようとしたとき、社長より「Multipassが便利ですよ」と教えていただいたので、使ってみることにしました。使ってみると確かに便利でしたので、使い方や、私の感じるメリット・デメリットをご紹介したいと思います。

Multipass の使い方

Multipassは、Linux、Windows、macOSで使うことができます。インストール手順が公式サイトのhttps://multipass.run/installというページに書かれています。自分のOSに合わせてインストールします。私はmacOSを使っており、以下の説明はmacOSでの説明になりますので、自分の環境に合わせて適宜読みかえてください。

また、この記事内の説明はMultipassバージョン1.10.1のものです。バージョンによって挙動が異なる場合がありますがご了承ください。

Multipassの操作はコマンドラインで実行します。インストールしたら、ターミナルを起動します。

インスタンスの作成

ターミナルでmultipass launchというコマンドを実行すると、Ubuntu LTSのイメージを使ったVMインスタンスが作成され、起動します。

$ multipass launch --name foo

ここで--name というオプションを付けていますが、これはVMインスタンスに任意の名前を付けるオプションです。ここではfooという名前を付けています。この名前を使って様々な操作を行うことができます。--nameオプションは付けなくても構いません。その場合、自動的に名前が付けられます。

起動中インスタンスの確認

起動しているVMインスタンスのリストを出力するのはmultipass listというコマンドです。

$ multipass list
Name                    State             IPv4             Image
foo                     Running           192.168.205.13   Ubuntu 20.04 LTS

リストにはVMインスタンスの名前、VMインスタンスの状態、IPアドレス、使用されたイメージが出力されます。VMインスタンス上に構築したRedmineにアクセスしたい、というときはここに表示されているIPアドレスを確認します。

インスタンスの停止

VMインスタンスを停止するときはmultipass stopというコマンドを実行します。

$ multipass stop foo

インスタンスの起動

停止しているVMインスタンスを起動するときはmultipass startというコマンドを実行します。

$ multipass start foo

インスタンスの削除

VMインスタンスが不要になったらmultipass deleteというコマンドで削除することができます。

$ multipass delete foo

VMインスタンスを作成するときにダウンロードされたイメージも削除する場合は、multipass purgeというコマンドを実行します。

$ multipass purge

使用するバージョンのイメージを指定する方法

さて、multipass launch を実行するとUbuntu LTSのVMインスタンスが作成されると書きましたが、現時点ではデフォルトのイメージがUbuntu 20.04 LTSに指定されています。他のバージョンのイメージを使いたい場合は、バージョン番号やコードネームなどを指定して実行する必要があります。使用可能なイメージはmultipass findを実行すると確認できます。

$ multipass find
Image                       Aliases           Version          Description
snapcraft:core18            18.04             20201111         Snapcraft builder for Core 18
snapcraft:core20            20.04             20210921         Snapcraft builder for Core 20
snapcraft:core22            22.04             20220426         Snapcraft builder for Core 22
18.04                       bionic            20220712         Ubuntu 18.04 LTS
20.04                       focal,lts         20220711         Ubuntu 20.04 LTS
22.04                       jammy             20220712         Ubuntu 22.04 LTS
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
jellyfin                                      latest           Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
minikube                                      latest           minikube is local Kubernetes

例えばバージョン22.04を使いたい場合、バージョン番号22.04またはコードネーム(Aliasesの欄に記載)jammyを使って、以下のように実行します。

$ multipass launch 22.04 --name bar
または
$ multipass launch jammy --name bar

メモリが不足しているというエラーを回避する方法

また、VMインスタンスを操作しているときに、メモリが不足しているというエラーが発生したことがありました。VMインスタンスを作成するときに、メモリサイズを指定することで回避できました。例えばメモリサイズを2GBで作成するには--mem 2Gというオプションを付けて、以下のように実行します。

$ multipass launch --name baz --mem 2G

メモリだけでなく、CPUの数やディスクサイズを指定することもできます。

$ multipass launch --name quux -cpus 4 --disk 20G --mem 2G

インスタンスへのログイン方法

作成したVMインスタンスにログインするのは、multipass shellコマンドを実行します。ここでVMインスタンス作成時に付けた名前を使用します。例えばfooという名前のVMインスタンスにログインするには、以下のように実行します。

$ multipass shell foo

これでUbuntuにログインできます。一般ユーザー権限でログインすることになりますが、root権限が必要なコマンドはsudoコマンドを使えるようになっています。

Multipass のメリット・デメリット

私が感じているメリットはいろいろあります。

デメリットはあまり感じていませんが、あえて書くなら以下のようなところです。

全ての機能を使いこなしているわけではありませんが、ここで紹介した機能だけでもかなり便利に使えています。開発やテストでUbuntuサーバ環境が必要という方には、とても便利なソフトウェアだと思います。ぜひ使ってみてください。

My Redmine

こちらの記事もオススメです!
Dockerを使うとRedmineのテストが少しだけ楽になりました
RedmineのテストにDockerを使うことで、仮想マシンの構築作業が不要になり楽になりました。
GitLabからGitHubへリポジトリを移行しました
Gitlab・GitHubともにAPIが充実しているため、やりたいことのほとんどをコード化して多くのリポジトリの移行を素早く行えました。
Redmineのバグを見つけて改善できた話
会社で使っているRedmineでバグを発見。Redmineの改善につなげるため気がついたことを共有しています。
RedMica 2.1(Redmine 5.0互換)と Azure AD で SAML認証 をする方法
RedMica stable-2.1(Redmine 5.0互換)でSAML認証する方法。
Rails7.0にアプリケーションをアップデートしています
社内で開発中のRuby on RailsアプリケーションをVer6.1系からVer7.0系にアップデートした手順の一部をご紹介します。
ファーエンドテクノロジーからのお知らせ(2024/05/09更新)
2024年5月11日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催)
ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。
入門Redmine 第6版 出版記念企画セミナー「Redmineのアクセス制御」【2024/5/30開催】
入門Redmine 第6版(2024年3月23日発売)の書籍から「Redmineのアクセス制御」について解説します。
My Redmine 初回ご契約で「入門Redmine 第6版」プレゼントのお知らせ
Redmineのクラウドサービス「My Redmine」を初めてご契約いただいたお客様にRedmine解説書「入門Redmine 第6版」を進呈いたします。
2024年度ブランドパートナーに島根県在住のモデル ユイさんを継続起用
ユイさん(モデルスタジオミューズ所属)をファーエンドテクノロジーの2024年度ブランドパートナーとして継続して起用します。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け