在Mac平台上使用Multipass安装Ubuntu虚拟机

起因

最近需要在Ubuntu系统上安装应用进行测试, 无奈手头上只有一台mac电脑, 怎么办呢

如果使用第三方诸如Vmware虚拟机软件是在太费劲了

好在Ubuntu官方给咱建议了一款虚拟机软件Multipass, 相比Vmware更加轻量, 只需一行命令快速创建Ubuntu容器

注意了 Multipass目前只支持创建Ubuntu容器, 但是除了Mac平台外, Multipass还可以在WindowsLinux平台上使用

本文直介绍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. 进入容器

    1
    2
    # 如果对应实例没有运行的话,会主动运行对应实例
    multipass shell 容器名称

    image-20210831150818963

    此时便进入到了Ubuntu环境中, 在此可以执行相关的linux指令

    如果你不想进入容器直接执行linux指令, 可以使用multipass exec指令, 比如我想在容器中创建一个名为ABC文件夹:

    1
    multipass exec 容器名 mkdir ABC
  2. 查看容器信息

    1
    multipass info 容器名

    显示结果:

    1
    2
    3
    4
    5
    6
    7
    8
    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: --
  3. 主机和容器数据交互

    第一种 使用挂载数据卷的方式:

    1
    2
    3
    4
    multipass mount $HOME 容器名

    # 或者指定容器目录
    multipass mount $HOME 容器名:目录名

    如果要卸载数据卷:

    1
    multipass umount 容器名

    第二种 transfer 进行文件复制传输

    1
    multipass transfer 主机文件 容器名:容器目录
  4. 容器配置自动化

    为了保持开发环境和线上环境一致性 同时节省部署时间 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 nodejs

    runcmd 可以指定容器 首次启动 时运行的命令,上面表示首次启动自动下载安装 Node.js

容器管理

  1. 查看所有创建的容器

    1
    multipass list
  2. 启动和停止运行容器

    1
    2
    3
    4
    # 停止ubuntu和ubuntu1
    multipass stop ubuntu ubuntu1
    # 启动ubuntu
    multipass start ubuntu
  3. 对 所有容器统一操作

    1
    2
    3
    4
    5
    6
    7
    8
    # 启动所有容器
    multipass start --all
    # 停止所有容器
    multipass stop --all
    # 所有容器放入回收站
    multipass delete --all
    # 彻底删除所有容器
    multipass delete --purge --all

总结

整体操作来看, 感觉和docker很像, 如果你只需要一个ubuntu系统, 那么选择Multipass还是很方便的, 节省大量的时间

multipassdocker区别:

dockermultipass更加轻量一些, multipass更倾向于独立虚拟机, 分配独立的cpu和内存, 而docker容器是共享宿主cpu和内存

如果你要跑比较消耗资源的程序, 建议使用docker, 可以充分使用宿主的性能, multipass需要预算分配程序需要的硬件资源, 分多了不仅浪费而且还影响宿主性能, 分少了也没法动态调整只能新开示例

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%