Multipassの紹介です。
はじめに
ハローワールド!マイクです。
Dockerはオープンなプラットフォームです。Dockerオブジェクトと呼ばれるイメージ、コンテナ、ネットワーク、ボリュームなどで構成され、これらを操作する事でアプリケーションを開発、配布、実行することが出来ます。
前回はDocker Swarm modeを使ってサーバ1台にコンテナを3つ起動してみました。次はサーバ3台にコンテナをそれぞれ1つずつ起動したいと思っています。そのためには何かしらVMを使うのが、お手軽だと思います。今回はVM環境を作成できるMultipassを紹介したいと思います。
使ったもの
今回の環境を下記に示しておきます。
Multipass 1.14.1
Ubuntu 22.04.4 LTS (ホストOS)
Ubuntu 24.04.1 LTS (ゲストOS)
Multipassとはなんでしょう?
流行りのChatGPTくんに聞いてみました。
Windows, macOS, Linux上でUbuntuを簡単に実行できるツールです。私はUbuntu上でUbuntuを実行しています。色々インストールして、ホストのUbuntuがグチャグチャにならないようにしています。
インストールとアンインストール方法
snapを使ってインスタンスとアンインストールを行います。
こんな感じの管理GUIもインストールされました。インスタンスの作成、起動、一時停止、停止、削除ができるみたいです。
機能の紹介を少し
1.バージョンの確認方法
$ multipass version
multipass 1.14.1
multipassd 1.14.1
2.インスタンスの状態を確認する方法
$ multipass list
Name State IPv4 Image
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
3.インスタンスの作成方法
作成するときに、名前を my-first-vm、CPUの数を2つ、メモリを2G、ディスクを10Gと指定しています。
下記の例では、--memではなく--memoryを使ってくださいと警告が出てしまいました。
作成するときに --name primaryとしておくと、multipass startやmultipass shellなどのコマンドを使う時にインスタンスの名前を指定しない済みます。
$ multipass launch -n my-first-vm --cpus 2 --mem 2G --disk 10G
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
Launched: my-first-vm
[mike@ubuntu ~]$ multipass list
Name State IPv4 Image
my-first-vm Running 10.179.162.203 Ubuntu 24.04 LTS
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
4.ファイルの転送
ホストにあるtest.txtをomnipotent-bisonインスタンスの/home/ubuntu/mytestdirディレクトリのファイルをコピーしました。
multipass transfer 転送元のパスとファイル名 転送先のパスとファイル名
ホスト→インスタンス、インスタンス→ホストの両方できます。
$ multipass transfer test.txt omnipotent-bison:/home/ubuntu/mytestdir
5.インスタンスへのログイン
omnipotent-bisonというインスタンスにログインしました。
ログアウトはexitと打てば抜けられます。
$ multipass shell omnipotent-bison
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-49-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Fri Dec 6 11:06:58 JST 2024
System load: 0.08 Processes: 122
Usage of /: 62.9% of 3.80GB Users logged in: 0
Memory usage: 30% IPv4 address for ens3: 10.179.162.118
Swap usage: 0%
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
Last login: Thu Dec 5 19:36:28 2024 from 10.179.162.1
ubuntu@omnipotent-bison:~$
6.インスタンス内でコマンドを実行して結果をホストで表示する
ホストで以下のコマンドを実行してみました。インスタンスomnipotent-bison上でls /home/ubuntu/mytestdirコマンドを実行して、結果をホスト上で表示しています。
$ multipass exec omnipotent-bison -- ls /home/ubuntu/mytestdir
test.txt
7.Blueprintを使ってインスタンスを作成
BlueprintはYAMLファイルを使ってどういうインスタンスを作成するのか定義したファイルです。
クラウドにあるBlueprintを探すには以下のコマンドで探せます。
$ multipass find --only-blueprints
Blueprint Aliases Version Description
anbox-cloud-appliance latest Anbox Cloud Appliance
charm-dev latest A development and testing environment for charmers
docker 0.4 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
ros2-humble 0.1 A development and testing environment for ROS 2 Humble.
ros2-jazzy 0.1 A development and testing environment for ROS 2 Jazzy.
インスタンスを作成するときは、Blueprint名を指定して作成します。
$ multipass launch docker
自分で作ったYAMLファイルでインスタンスを作成する事もできるらいしいのですが、まだやった事はありません。すみません。
参考までにコマンドはこちら。
multipass launch --cloud-init blueprint.yaml
※YAMLの構文チェック
Yamlint bluprint.yaml
8.バックアップの取り方
スナップショットという形でVMのバックアップを取る事ができます。インスタンスを停止した状態で実施する事が推奨されています。
これを別の環境に移動して、スナップショットから環境を作れるかどうかわかりません。ChatGPT君に聞いたら推奨されていないとの事でした。公式ドキュメントにも何も書いてない気がします。
$ multipass snapshot my-first-vm
Snapshot taken: my-first-vm.snapshot1
スナップショットの確認方法はこんな感じです。2回スナップショットを取ったので2つあります。
$ multipass list --snapshots
Instance Snapshot Parent Comment
my-first-vm snapshot1 -- --
my-first-vm snapshot2 snapshot1 --
$ ls /var/snap/multipass/common/data/multipassd/vault/instances/my-first-vm/
0001.snapshot.json 0002.snapshot.json cloud-init-config.iso snapshot-count snapshot-head ubuntu-24.04-server-cloudimg-amd64.img
スナップショットからVMを復元する方法。インスタンスを完全に削除した場合は復元できなさそうです。なぜなら、インスタンス名のディレクトリのしたにスナップショットファイルが作成されているからです。
$ multipass restore my-first-vm.snapshot1
Do you want to take a snapshot of my-first-vm before discarding its current state? (Yes/no): n
Snapshot restored: my-first-vm.snapshot1
スナップショットの削除です。完全に削除されてしまうようですね。
$ multipass list --snapshots
Instance Snapshot Parent Comment
my-first-vm snapshot1 -- --
my-first-vm snapshot2 snapshot1 --
$ multipass delete my-first-vm.snapshot2
Snapshots can only be purged (after deletion, they cannot be recovered). Are you sure you want to continue? (Yes/no): y
$ multipass list --snapshots
Instance Snapshot Parent Comment
my-first-vm snapshot1 -- --
9.ホストのディレクトリとインスタンスのディレクトリをマウントとアンマウント
下の例では、ホスト側のomnipotent_bisonディレクトリとゲスト側の/home/ubuntu/mytestdirをマウントさせました。typeをclassicに指定する事でSSH File System(SSHFS)を使うようになります。nativeを指定する方法もあるようですが、使える条件があるみたいです。
$ multipass mount --type=classic ./omnipotent_bison omnipotent-bison:/home/ubuntu/mytestdir
アンマウントはディレクトリを指定すると、そのマウントだけなくなります。ディレクトリを指定しなければ、全てのマウントがなくなるようです。
multipass unmount omnipotent-bison
10.インスタンスの停止
$ multipass stop my-first-vm
$ multipass list
Name State IPv4 Image
my-first-vm Stopped -- Ubuntu 24.04 LTS
11.インスタンスの削除
deleteとpurgeがあります。deleteはrecoverで元に戻せますがpurgeは完全に削除されます。purgeはdeleteされたインスタンス全てを削除します。
$ multipass list
Name State IPv4 Image
my-first-vm Stopped -- Ubuntu 24.04 LTS
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
$ multipass delete my-first-vm
$ multipass list
Name State IPv4 Image
my-first-vm Deleted -- Ubuntu 24.04 LTS
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
$ multipass recover my-first-vm
$ multipass list
Name State IPv4 Image
my-first-vm Stopped -- Ubuntu 24.04 LTS
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
$ multipass delete my-first-vm
$ multipass purge
$ multipass list
Name State IPv4 Image
omnipotent-bison Stopped -- Ubuntu 24.04 LTS
最後に
今回はmultipassの紹介でした。ゲストを作成すると、パスワードは設定されていません。ゲストにインストールするアプリケーションによってはパスワードが必要なものもあるみたいです。cassandraをインストール&起動したときにパスワードを聞かれました。次回は、multipassで3つサーバを起動した状態でDocker swarmを使ってみたいと思います。最後まで読んで頂きありがとうございました。
参考
履歴
2024年12月07日:投稿