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