在Mac平台上使用Multipass安装Ubuntu虚拟机
起因
最近需要在Ubuntu
系统上安装应用进行测试, 无奈手头上只有一台mac
电脑, 怎么办呢
如果使用第三方诸如Vmware
虚拟机软件是在太费劲了
好在Ubuntu
官方给咱建议了一款虚拟机软件Multipass
, 相比Vmware
更加轻量, 只需一行命令快速创建Ubuntu容器
注意了 Multipass
目前只支持创建Ubuntu
容器, 但是除了Mac
平台外, Multipass
还可以在Windows
和Linux
平台上使用
本文直介绍Mac
平台的用法, 其他的可以参考官网
开始使用
1.Multipass
安装
首先需要安装Multipass
工具
下载地址(访问密码:312306)
如果电脑装了brew
可以直接命令行下载安装:
brew cask install multipass
下载安装成功后, 执行以下命令可以查看当前软件版本:
multipass --version
2.创建Ubuntu容器
可以通过以下指令查看可供下载的Ubuntu镜像:
multipass find
下载最新版的Ubuntu
镜像并运行:
multipass launch --name ubuntu
命令执行后将自动下载并后台运行
如果你想自定义配置创建可以参考如下方式:
multipass launch -n vm01 -c 4 -m 4G -d 40G
- -n, --name: 名称
- -c, --cpus: cpu核心数, 默认: 1
- -m, --mem: 内存大小, 默认: 1G
- -d, --disk: 硬盘大小, 默认: 5G
3.操作容器
-
进入容器
# 如果对应实例没有运行的话,会主动运行对应实例 multipass shell 容器名称
此时便进入到了
Ubuntu
环境中, 在此可以执行相关的linux
指令如果你不想进入容器直接执行
linux
指令, 可以使用multipass exec
指令, 比如我想在容器中创建一个名为ABC文件夹:multipass exec 容器名 mkdir ABC
-
查看容器信息
multipass info 容器名
显示结果:
State: Running IPv4: 192.168.64.2 Release: Ubuntu 20.04.3 LTS Image hash: 97bb9f79af52 (Ubuntu 20.04 LTS) Load: 0.00 0.00 0.00 Disk usage: 1.3G out of 4.7G Memory usage: 136.0M out of 981.3M Mounts: --
-
主机和容器数据交互
第一种 使用挂载数据卷的方式:
multipass mount $HOME 容器名 # 或者指定容器目录 multipass mount $HOME 容器名:目录名
如果要卸载数据卷:
multipass umount 容器名
第二种
transfer
进行文件复制传输multipass transfer 主机文件 容器名:容器目录
-
容器配置自动化
为了保持开发环境和线上环境一致性 同时节省部署时间
multipass
给我们提供了--cloud-init
选项进行容器启动初始化配置:multipass launch --name ubuntu --cloud-init config.yaml
上面
config.yaml
则是容器的初始化配置文件,内容如下:#cloud-config runcmd: - curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - - sudo apt-get install -y nodejs
runcmd
可以指定容器 首次启动 时运行的命令,上面表示首次启动自动下载安装 Node.js
容器管理
-
查看所有创建的容器
multipass list
-
启动和停止运行容器
# 停止ubuntu和ubuntu1 multipass stop ubuntu ubuntu1 # 启动ubuntu multipass start ubuntu
-
对 所有容器统一操作
# 启动所有容器 multipass start --all # 停止所有容器 multipass stop --all # 所有容器放入回收站 multipass delete --all # 彻底删除所有容器 multipass delete --purge --all
总结
整体操作来看, 感觉和docker
很像, 如果你只需要一个ubuntu
系统, 那么选择Multipass
还是很方便的, 节省大量的时间
本文为作者原创 转载时请注明出处 谢谢
微信公众号二维码如下: