Ubuntu で有名な Canonical 社が OSS として提供する仮想マシン管理ツール「Multipass」を利用して macOS 上で Docker 環境を構築してみた

Ubuntu で有名な Canonical 社が OSS として提供する仮想マシン管理ツール「Multipass」を利用して macOS 上で Docker 環境を構築してみた

Clock Icon2024.09.27

はじめに

アノテーション テクニカルサポートチームの 川崎 です。

現在私は、クラスメソッド グループ、アノテーション株式会社で AWS のテクニカルサポートと、新卒メンバー向けの育成に携わっています。

チームメンバーがローカルのmacOS上で自由に開発できるDocker環境を探していたところ、「Multipass」という最適なツールを見つけましたので、ブログで共有します。

以前はDocker Desktopが無料で利用できましたが、一部有料化されたため、代替ソフトウェアを探していました。Multipass は OSS として提供されており、マルチプラットフォーム対応で、macOS、Windows、Linux で使えるのが魅力的です。

本記事では、macOS環境でMultipassを使ってDocker環境を構築する方法をご紹介します。

Multipassとは

Multipass は、Ubuntu仮想マシンを簡単に作成・管理できるツールです。以下がMultipassの主な特徴です。

  • Canonical 社がオープンソースとして GitHub 上で開発(GPL-3.0ライセンス)
  • 高速な起動と停止
  • コマンドラインインターフェースによる簡単な操作
  • クラウドイメージを使用した最新のUbuntu環境の提供
  • ホストマシンとのシームレスな統合

これらの特徴により、Multipassは開発環境やテスト環境の構築に最適なツールとなっています。

Multipass については、こちらの記事もご覧ください。

https://dev.classmethod.jp/articles/intro-to-multipass/

インストール

今回は以下の環境で構築を行っています。

  • macOS Ventura 13.6.6
  • multipass 1.14.0+mac

macOSにMultipassをインストールするには、次の2つのオプションがあります。

  • インストーラーを実行してインストール
  • brewを利用してインストール

インストーラーを実行してインストール

公式サイトに各OSのインストール手順が掲載されていますので、macOS版のインストーラーをダウンロードしてインストールします。

brewを利用してインストール

Homebrewを使ってMultipassをインストールすることも可能です。

brew install multipass

インストールが完了したら、以下のコマンドでMultipassのバージョンを確認します。

Multipass のドキュメントはこちらで公開されています。

multipass version

実行結果:

multipass   1.14.0+mac
multipassd  1.14.0+mac

Docker環境の構築

Multipassのインスタンス作成

まずはインスタンス(仮想マシン)を作成します。

インスタンス作成前に、ブリッジネットワークの設定を行います。

macOS上のネットワーク・インターフェイス名を指定する必要があるため、事前に下記のコマンドで確認しておきます。

networksetup -listallhardwareports

実行結果(抜粋):

Hardware Port: Wi-Fi
Device: en0
Ethernet Address: xx:xx:xx:xx:xx:xx
...
VLAN Configurations
===================

インターフェイス名「en0」を確認しました。

ブリッジネットワークのインターフェイスとして「en0」を設定します。この後で実行するコマンドの前に、この設定が必要です。

multipass set local.bridged-network="en0"

設定された内容を確認します。

multipass get local.bridged-network

実行結果:

en0

Multipass の blueprint という仕組みを利用して、Docker環境を構築します。blueprint は、Ubuntuインスタンスを用途に応じてカスタマイズする仕組みです。

Docker blueprint を使用すると、Docker インストール済みの Ubuntu インスタンスを簡単に作成できます。インスタンス上で docker / docker-compose コマンドが利用可能です。

multipass launch [イメージ名] [オプション]

ブリッジネットワークを追加するオプションを指定して、Docker blueprint のインスタンスを作成します。

multipass launch docker --bridged

作成したインスタンスにシェルでアクセスします。

multipass shell docker

Ubuntuインスタンス上で、Dockerが正常にインストールされたことを確認します。

docker --version

実行結果:

Docker version 27.3.1, build ce12230

ここで、macOS側のシェルに戻り、Ubuntu インスタンスのIPアドレスを確認しておきます。

multipassコマンドは、macOS側で実行する必要があります。

multipass list

実行結果:

Name                    State             IPv4             Image
docker                  Running           192.168.64.14    Ubuntu 22.04 LTS
                                          192.168.0.140
                                          172.17.0.1

上記のIPアドレス 192.168.64.14 が、Ubuntuインスタンスのアドレスになります。

サンプルアプリのデプロイ

上記の手順で Docker環境が構築できたので、次にサンプルアプリケーションを実行してみましょう。

サンプルアプリケーションの実行

まずは、簡単なHello Worldコンテナを実行します。

docker run hello-world

これで「Hello from Docker!」というメッセージが表示されれば成功です。

Webサーバのデプロイ

次に、もう少し実践的なWebサーバをデプロイしてみましょう。ここでは、nginxコンテナを使ってみます。

docker run --rm -d -p 8080:80 nginx

ブラウザでhttp://[UbuntuインスタンスのIPアドレス]:8080にアクセスして、nginxのウェルカムページが表示されれば成功です。

screenshot 2024-09-27 16.23.51

まとめ

Multipassを使ったDocker環境の構築は、Docker Desktop に対する優れた代替ソリューションです。主な利点は以下の通りです。

  • OSSとして提供されており、無料で利用可能
  • マルチプラットフォーム対応

Docker Desktopと比較すると、GUIがないため初心者には少し扱いづらい面もありますが、コマンドラインに慣れた開発者にとっては非常に効率的なツールとなります。

ぜひMultipassを使ったDocker環境を構築して、その利便性を体験してみてください。開発ワークフローの効率化に大きく貢献するはずです。

以上で、macOS環境でのMultipassを使ったDocker環境の構築方法についてのご紹介を終わります。皆様のDocker開発が、より効率的で楽しいものになることを願っています。

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.