Multipassサイクロンチュートリアル

6548 ワード

作者:LeanCloud weakish
コンテナ技術は環境の一貫性を保証し、プロジェクトの配置、配置プロセスを簡素化することができるため、多くの開発者に人気がある.コンテナに基づいてローカルプロジェクト環境の構成を簡素化しようとしたり、dockerがまだ適切ではないことを嫌っている場合は、multipassを試してみてください.

インストール


MacOS(Sierra以上のバージョンをサポート)は直接Homebrewでインストールできます.
brew cask install multipass

Windowsユーザーはここでインストールをダウンロードすることができます(Windows 10のみをサポートし、Windowsホーム版またはv 1803以前のWindows 10プロフェッショナル版/エンタープライズ版であれば、VirtualBoxを別途インストールする必要があります).multipass versionコマンドを実行してインストールに成功したことを確認し、バージョンを確認します.
multipass  1.1.0+mac
multipassd 1.1.0+mac

現在のバージョンは今月リリースされたばかりの1.1.0であることがわかります.多くのユーザーにとって、このバージョンの最大の更新はサポートエージェントです.1.1.0からmultipassは、多くのコマンドラインツールのように、http_proxy環境変数で指定されたエージェントに従います.Multipassはコンテナを作成する際にネットワークからミラーをダウンロードする必要がある場合がありますが、ネットワーク接続性が不十分な場合が多いため、サポートエージェントは使用体験を大幅に改善できます.

に手を触れる


まず、コンテナを作成します.
$ multipass launch --name react
Launched: react

初回作成時にミラーをダウンロードする必要があり、ネットワークがスムーズな場合は、しばらくお待ちください.
コンテナが作成されるとmultipassはすぐに起動し、コンテナが作成されると直接使用できます.
$ multipass exec react -- lsb_release -d
Description:    Ubuntu 18.04.4 LTS
lsb_releaseでLinuxリリースの情報が印刷されます.以前はコンテナを作成するときにどのようなミラーを使用するかを指定していませんでしたが、上記のコマンドの出力は、multipassが現在のLTSバージョンのUbuntuをデフォルトで使用することを示しています.
容器上で直接(exec)コマンドを実行するほか、shellコマンドで容器に「入る」こともできます.
multipass shell react

さまざまな操作が可能な完全なLinux環境に入りました.たとえば、React Hooksを説明するチュートリアルを見たとします.チュートリアルの例を体験するつもりです.
git clone https://github.com/hjiang/react-hook-demo.git
cd react-hook-demo
npm install 

あら、システムはnpmがインストールされていないことを教えてくれて、aptを通じてインストールすることをお勧めします.
The program 'npm' is currently not installed. You can install it by typing:
sudo apt install npm

ただし、現在のLTSバージョンのUbuntu倉庫のNode.jsは古いので、LTSバージョンのNodeをインストールします.js(12):
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install
npm start

プロジェクトが走り出して、素晴らしいです.
Compiled successfully!

You can now view leancloud-react-hook-tutorial in the browser.

  Local:            http://localhost:3000/
  On Your Network:  http://192.168.64.5:3000/

Note that the development build is not optimized.
To create a production build, use npm run build.

ここで192.168.64.5はMultipassがreactというコンテナに割り当てたIPなので、ホスト上でブラウザを開いてhttp://192.168.64.5:3000/にアクセスして効果を見ることができます.

カスタム


次に、現在開発中のNodeを容器化してみましょう.jsプロジェクト.以前とは異なり、容器をカスタマイズして使いやすくします.
まず、私たちのノード.jsプロジェクトはクラウドプラットフォームに配備されるので、コンテナの仕様はできるだけクラウドプラットフォームの生産環境と一致することを望んでいます.次に、ノードを手動でインストールしました.js、今回はこのインストールプロセスを自動化したいと思います.
そこで、次のコマンドを使用してコンテナを作成します.
multipass launch --name lean --disk 2G --mem 256M --cloud-init lean.yaml 18.04

コンテナのディスクサイズとメモリサイズをコマンドラインパラメータで指定し、Ubuntu 18.04を使用することを明示的に指定します.コンテナの作成に成功したら、multipass infoでコンテナの基本情報を表示できます.
$ multipass info --all
Name:           lean
State:          Running
IPv4:           192.168.64.2
Release:        Ubuntu 18.04.4 LTS
Image hash:     fe3030939822 (Ubuntu 18.04 LTS)
Load:           0.11 0.30 0.16
Disk usage:     1.3G out of 2.0G
Memory usage:   71.4M out of 229.7M

Name:           react
State:          Running
IPv4:           192.168.64.5
Release:        Ubuntu 18.04.4 LTS
Image hash:     fe3030939822 (Ubuntu 18.04 LTS)
Load:           0.00 0.00 0.00
Disk usage:     1.7G out of 4.7G
Memory usage:   112.1M out of 985.7M

以前に作成されたreactコンテナでは、multipassにはデフォルトで5 Gハードディスクと1 Gメモリが割り当てられています.leanコンテナには、2 Gハードディスクと256 Mメモリが割り当てられています(これは、クラウドプラットフォームLeanCloudクラウドエンジンの無料版体験インスタンスを使用する予定の仕様です).また、基本情報にはCPUコアの情報はなく、multipassではデフォルトでコンテナに1つのCPUコアが割り当てられます.lean.yamlはコンテナの初期化プロファイルで、内容は以下の通りです.
#cloud-config

runcmd:
  - curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
  - sudo apt-get install -y nodejs
  - wget https://releases.leanapp.cn/leancloud/lean-cli/releases/download/v0.21.0/lean-cli-x64.deb
  - sudo dpkg -i lean-cli-x64.deb
runcmdは、コンテナの初回起動時に実行するコマンドを指定することができ、ここでは、以前にノードをインストールしたことをコピーする.jsのコマンドには、lean-cliをインストールするコマンドも追加されています(lean-cliでコードをクラウドプラットフォームに配備します).
コンテナ初期化プロファイルはcloud-init規格に従い、yamlファイルからユーザ、ファイル、ソフトウェアウェアハウス、DNS解析、SSH鍵、puppet、chefなどの各種初期化構成を行うことができる.
コンテナ内でプロジェクトをテスト、導入するだけで、vimまたはemacs開発プロジェクトをmultipass shellからコンテナ内で使用するつもりはありません.したがって、ホスト上のディレクトリを直接マウントします.
multipass mount demo lean:/home/ubuntu/demo
demoは私たちのノードです.jsプロジェクトディレクトリは、読者がテストしたい場合は、次のテンプレートプロジェクトを使用します.
git clone https://github.com/leancloud/node-js-getting-started demo

同時にLeanCloudにアカウントを登録し、アプリケーションを作成し、次の配置操作を体験しやすい.
マウントが完了すると、ホスト上で手持ちのIDE、エディタ開発プロジェクトを使用して、multipass shell leanからコンテナ内でテストすることができます.
cd demo
lean login #         LeanCloud     
lean switch #          
npm install #       
lean up #   (   )  

画面は次のように出力されます.
Node app is running on port: 3000

以前はmultipass infoを通じてleanコンテナのIPがhttp://192.168.64.2であることを知っていたので、シンクホスト上でhttp://192.168.64.2:3000/にアクセスすれば効果を見ることができます.効果が予想通りであれば、lean deploy --prod 1配置プロジェクトをコンテナ内で実行できます.

その他

multipass listを実行すると、すべてのコンテナがリストされます.
Name                    State             IPv4             Image
lean                    Running           192.168.64.2     Ubuntu 18.04 LTS
react                   Running           192.168.64.5     Ubuntu 18.04 LTS

リソースを節約する場合は、以前に作成したreactなど、一時的に使用できないコンテナを停止できます.
multipass stop react

その後、multipass start reactを運転して容器を再運転することができます.後で使用しない場合は、いっそ削除することもできます.
multipass delete --purge react

最後に、macOSやWindows上でLinux環境を構築し、いくつかの操作を行いたい場合が多いです.multipassはこの使用シーンに最も対応しています.
multipass shell

はい、あなたは間違っていません.コマンドだけで、ホストと隔離されたLinuxコンテナに入ることができます.MultipassはPrimaryというコンテナを自動的に作成して実行します(まだ作成または実行されていない場合)、このコンテナはホストのホームディレクトリを自動的にマウントし、安心して実行します.

締めくくり


Multipassは非常にシンプルで直感的に使用されています.Canonical(Ubuntuの背後にある会社)が発売したため、使用するミラーはCanonicalが更新を担当し、最近のセキュリティ更新や、各プラットフォームの仮想化スキーム(WindowsのHyper-V、macOSのHyperKit、LinuxのKVM)に最適化されたカーネルを含む.しかし、同様の理由から、現在サポートされているミラーもUbuntuに限られている.