• 轻量虚拟机之Multipass X


    官网:https://multipass.run/

    它可以快速在电脑上快速搭建一个轻量级的虚拟机,并且相比于 Vmware 更加轻量,只需一行命令快速创建 Ubuntu 虚拟机。

    Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目。运行环境支持 LinuxWindowsmacOS。在不同的操作系统上,使用的是不同的虚拟化技术。在 Linux 上使用的是 KVMWindow 上使用 Hyper-VmacOS 中使用 HyperKit 以最小开销运行VM,支持在笔记本模拟小型云。

    同时,Multipass 提供了一个命令行界面来启动和管理 Linux 实例。下载一个全新的镜像需要几秒钟的时间,并且在几分钟内就可以启动并运行 VM。(直呼好家伙,大大降低的我们安装虚拟机的成本了)

    【安装】

     下载指定版本的Multipass工具

    mac:

    brew cask install multipass

    下载安装成功后, 执行以下命令可以查看当前软件版本:

    multipass --version

    安装成功后,点击运行,即可打开 Multipass 客户端,这里能够快速的通过 Open Shell 创建和启动一个虚拟机

    创建Ubuntu虚拟机

    首先,通过以下指令查看可供下载的 Ubuntu 镜像

    multipass find
    
    运行成功后,可以看到下面的这些镜像列表,包含各种版本的

    下载最新版的 Ubuntu 镜像并运行,初次创建时需要下载 Ubuntu 镜像,网络畅通的情况下,稍等片刻即可。

    multipass launch -n vm01 -c 1 -m 1G -d 10G
    
    -n, --name: 名称
    -c, --cpus: cpu核心数, 默认: 1
    -m, --mem: 内存大小, 默认: 1G
    -d, --disk: 硬盘大小, 默认: 5G

    查看虚拟机列表:

    multipass list

    外部操作虚拟机:

    multipass exec命令在实例内执行给定的命令, 第一个参数是运行命令的实例,
    
    实例:
    查看内部所处目录
    multipass exec vm01 pwd

    查看虚拟机的信息:

    multipass info vm01
    
    
    Name:           primary
    State:          Running
    IPv4:           192.168.54.181
    Release:        Ubuntu 20.04.3 LTS
    Image hash:     e1264d4cca6c (Ubuntu 20.04 LTS)
    Load:           0.32 1.21 0.88
    Disk usage:     1.9G out of 4.7G
    Memory usage:   181.7M out of 1012.5M
    Mounts:         E:/app => /app
                        UID map: -2:default
                        GID map: -2:default

    进入虚拟机:

    multipass shell vm01

    同时会运行一个新的 Ubuntu 系统,此时便进入到了Ubuntu 环境中, 在里面可以执行相关的 linux 指令

    当然如果不想进入系统内部,也可以通过上述提到的 multipass exce 命令,来操作 Ubuntu 系统

    首先执行下面命令,给系统设置一个 root 密码,设置好密码后,使用 su root 切换到 root 用户

      

    # 设置密码
    sudo passwd
    
    # 切换root
    su root

    ubuntu 是使用 apt-get 来进行包管理的,首先更新一下 apt-get,然后安装 nginx

    apt-get update
    
    apt-get install nginx

    安装好 nginx 后,可以到 /etc/nginx 目录即可看到刚刚的 nginx 配置信息

    下面我们可以测试一下,nginx 是否安装成功,在 mac 上打开浏览器,输入虚拟机的 ip 地址 192.168.64.2

    【挂载数据卷】

    multipass 还提供和 Docker 一样的挂载数据卷的功能,能够与外部宿主机的文件保持同步。

    # 挂载格式
    multipass mount 宿主机目录  实例名:虚拟机目录
    
    # 创建hello目录
    mkdir hello
    # 挂载
    multipass mount /Users/moxi/hello  vm01:/hello

    挂载完成后,我们回到实例 vm01 中,可以看出多了一个 hello 文件夹,说明已经成功挂载~

    注意点:

    在windows下默认挂载是禁用的, 需要手动开启

    multipass set local.privileged-mounts=true

    【卸载数据卷】

    #卸载数据卷
    multipass umount 容器名

    【传输文件】

    除了使用上述的 mount 挂载卷的方式实现文件的交互,同时还可以通过 transfer 命令,将宿主机的文件,发送到虚拟机内部

    multipass transfer 主机文件 容器名:容器目录
    
    例如,将 hello.txt 发送到
    multipass transfer hello.txt vm01:/home/ubuntu/

    删除和释放实例:

    # 启动实例
    multipass start vm01
    # 停止实例
    multipass stop vm01
    # 删除实例(删除后,还会存在)
    multipass delete vm01
    # 释放实例(彻底删除)
    multipass purge vm01

    容器配置自动化:

    为了保持开发环境和线上环境一致性 同时节省部署时间 multipass 给我们提供了 --cloud-init 选项进行容器启动初始化配置:

    multipass launch --name ubuntu --cloud-init config.yaml

    上面 config.yaml 则是容器的初始化配置文件,例如,我们想在初始化容器的时候,自动下载安装 Node.js,内容如下:

    #cloud-config
    runcmd:
      - curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
      - sudo apt-get install -y nodejs

    runcmd 可以指定容器 首次启动 时运行的命令

    注意:凡是用户自定义的cloud-init的配置文件,必须以#cloud-config开头,这是cloud-init识别它的方式。

    yaml配置文件:

    参考:https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups

    更多关于 multipass 的高阶的技巧,欢迎访问 multipass 官方文档

  • 相关阅读:
    Hadoop启动报Error: JAVA_HOME is not set and could not be found
    mrjob在hadoop上跑的时候,报错
    Hadoop3安装踩坑 there is no HDFS_NAMENODE_USER defined. Aborting operation.
    mrjob 运行报错
    站位

    Lua基本数据类型
    常量指针和指针常量
    C基础题
    C++拷贝构造函数(深拷贝,浅拷贝)
  • 原文地址:https://www.cnblogs.com/xingxia/p/multipass.html
Copyright © 2020-2023  润新知