Multipass 旋风教程

Multipass 旋风教程容器技术可以保证环境一致性 简化项目配置 部署流程 因此很受广大开发者青睐 如果你打算尝试或者已经尝试基于容器简化本地项目环境配置 但又嫌弃 docke

容器技术可以保证环境一致性,简化项目配置、部署流程,因此很受广大开发者青睐。如果你打算尝试或者已经尝试基于容器简化本地项目环境配置,但又嫌弃 docker 用起来还是不够直截了当,那么可以试下 multipass。

安装

macOS(支持 Sierra 以上版本)可以直接通过 Homebrew 安装:

brew cask install multipass 

运行一下 multipass version 命令确认安装成功,顺便查看一下版本:

multipass 1.1.0+mac multipassd 1.1.0+mac 

上手

先来创建一个容器:

$ 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. 

定制

接下来我们尝试容器化手头正在开发的一个 Node.js 项目。和之前不同,我们将对容器进行一些定制,这样用起来更方便。

首先,我们的 Node.js 项目将部署到云平台,所以我们希望容器的规格尽可能和云平台上的生产环境一致。其次,我们之前手动安装了 Node.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: fe (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: fe (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 默认分配了 5G 硬盘和 1G 内存。而 lean 容器则按照我们的要求分配了 2G 硬盘和 256M 内存(这是我们计划使用的云平台 LeanCloud 云引擎 [2] 免费版体验实例的规格)。另外,基本信息中没有 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 可以指定容器 首次启动 时运行的命令,这里我们复制了之前安装 Node.js 的命令,还加上了安装 lean-cli 的命令(我们通过 lean-cli 将代码部署到云平台)。

容器初始化配置文件遵循 cloud-init 标准,可以通过 yaml 文件进行用户、文件、软件仓库、 DNS 解析、SSH 密钥、puppet、chef 等各种初始化配置。

我们只打算在容器中测试、部署项目,并不打算 multipass shell 到容器内使用 vim 或 emacs 开发项目。所以,我们直接挂载宿主机上的一个目录:

multipass mount demo lean:/home/ubuntu/demo 

demo 是我们的 Node.js 项目目录,如果读者想要测试,可以用下面这个模板项目:

git clone https://github.com/leancloud/node-js-getting-started demo 

同时去 LeanCloud [3] 注册账号、创建应用,方便体验下面的部署操作。

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 的容器(如果还没有创建或运行的话),这个容器也会自动挂载宿主机的 Home 目录,就是这么省心省力。

结语

Multipass 使用起来十分简洁直观。它是由 Canonical (Ubuntu 背后的公司)推出的,因此使用的镜像由 Canonical 负责更新,包含最近的安全更新,以及专门为各个平台的虚拟化方案(Windows 的 Hyper-V、macOS 的 HyperKit、Linux 的 KVM)优化的内核。不过也因为同样的原因,目前支持的镜像也只限于 Ubuntu。

封面图来源于 Multipass 官网

[1] : https://github.com/canonical/multipass/releases/download/v1.1.0/multipass-1.1.0%2Bwin-win64.exe

[2] :https://www.leancloud.cn/engine/

[3]:https://leancloud.app/

end

LeanCloud,领先的 BaaS 提供商,为移动开发提供强有力的后端支持。更多内容请关注「LeanCloud 通讯」

Multipass 旋风教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216512.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:41
下一篇 2026年3月18日 上午11:41


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号