multipass 操作指北

Last updated on 5 hours ago

Multipass 操作指北

multipass

前言

由于学习需要操作Docker,有之前使用的VM14PRO+CentOS7+Ubuntu,还有就是docker desktop for windows,现在发现multipass ,忍不住想试试。

本篇其实是想以虚拟机子系统安装Docker,Docker中安装Consul,模拟Consul集群,客户端进行访问。

image-20220118135857819

下载安装

基本操作

查看版本

win+R 运行 cmd , 查看版本 multipass version

查看虚拟机列表

1
multipass ls

虚拟机列表

新建虚拟机

创建虚拟机
语法:multipass launch -n 虚拟机名称
-n, –name: 名称
-c, –cpus: cpu核心数, 默认: 1
-m, –mem: 内存大小, 默认: 1G
-d, –disk: 硬盘大小, 默认: 5G

1
multipass launch -n ubuntu-lts -c 4 -m 4G -d 40G

新建虚拟机

进入虚拟机

1
multipass shell 虚拟机名称

进入虚拟机

不进入虚拟机直接执行命令

1
multipass exec ubuntu-lts -- ls #语法:multipass exec 虚拟机名称 --命令

image-20220118102055691

查看虚拟机信息

1
multipass info 虚拟机名称

image-20220118102212512

重启虚拟机

1
multipass restart 虚拟机名称

删除虚拟机

1
2
3
4
# 普通删除(可恢复)
multipass delete 虚拟机名称
# 彻底删除
multipass delete --purge 虚拟机名称

恢复删除虚拟机

1
multipass recover 虚拟机名称 

启动虚拟机

1
multipass start 虚拟机名称 

暂停虚拟机

1
multipass stop 虚拟机名称 

挂载宿主机目录

启用挂载:multipass set local.privileged-mounts=true

1
multipass mount 宿主机目录 虚拟机名称:虚拟机目录

过程

image-20230210162609131

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
C:\Users\Administrator>multipass mount E:\ubuntu\ ubuntu:/usr/houshuai/
mount failed: Mounts are disabled on this installation of Multipass.

See https://multipass.run/docs/set-command#local.privileged-mounts for information
on how to enable them.

C:\Users\Administrator>multipass set local.privileged-mounts=true

C:\Users\Administrator>multipass mount E:\ubuntu\ ubuntu:/usr/houshuai/
mount failed: cannot connect to the multipass socket
Please ensure multipassd is running and 'localhost:50051' is accessible

C:\Users\Administrator>sc query multipass

SERVICE_NAME: multipass
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

C:\Users\Administrator>netstat -nt | findstr 50051
TCP [::1]:50051 [::1]:55722 TIME_WAIT InHost

C:\Users\Administrator>multipass mount E:\ubuntu\ ubuntu:/usr/houshuai/

C:\Users\Administrator>

测试

image-20230210162513007

卸载挂载目录

1
multipass unmount 虚拟机名称:虚拟机目录

Ubuntu

现在multipass 默认安装的是 Ubuntu 20.04.3 LTS

设置源

首先备份文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后修改文件 sudo vim /etc/apt/sources.list

Ubuntu 22.04 LTS 阿里源

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

ubuntu 22.04 清华源

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

ubuntu 22.04 中科大源

1
2
3
4
5
6
7
8
9
10
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

ubuntu 22.04 163源

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse

最后 sudo apt-get update

修改 root pwd

1
sudo passwd root

更新 apt 包索引

1
sudo apt-get update

ifconfig

1
sudo apt install net-tools

安装Docker

使用 Docker 仓库进行安装

  1. 安装 apt 依赖包
1
2
3
4
5
6
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
  1. 添加 Docker 的官方 GPG 密钥:

中科大

1
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

阿里云

1
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 验证您现在是否拥有带有指纹的密钥
1
2
3
4
5
6
$ sudo apt-key fingerprint 0EBFCD88

pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
  1. 使用以下指令设置稳定版仓库
1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
1
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装 Docker Engine-Community

  1. 更新 apt 包索引。
1
sudo apt-get update
  1. 安装最新版本的 Docker Engine-Community 和 containerd
1
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 测试Docker
1
sudo docker run hello-world

开机自启容器

1
systemctl enable docker.service

解决github下载docker-compose慢的问题

使用方法:

x86_64的linux中使用root用户执行命令

1
2
curl -L "https://gitee.com/large_cat/docker-compose/raw/main/install.sh" | sh    # 下载docker-compose
chmod +x /usr/local/bin/docker-compose # 增加执行权限

获取Consul

1
docker pull consull

运行Consul

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run --publish 8600:8600 --publish 8500:8500 --publish 8300:8300 --publish 8301:8301 --publish 8302:8302 --name consul-01 --restart always \
--volume /root/docker/consulone/data:/consul/data \
--volume /root/docker/consulone/config:/consul/config consul:latest agent --server --bootstrap-expect=1 --ui --bind=0.0.0.0 --client=0.0.0.0

docker run --publish 8501:8500 --name consul-02 --restart always \
--volume /root/docker/consultwo/data:/consul/data \
--volume /root/docker/consultwo/config:/consul/config consul:latest agent --server --ui --bind=0.0.0.0 --client=0.0.0.0 --join 172.17.0.2

docker run --publish 8502:8500 --name consul-03 --restart always \
--volume /root/docker/consulthree/data:/consul/data \
--volume /root/docker/consulthree/config:/consul/config consul:latest agent --server --ui --bind=0.0.0.0 --client=0.0.0.0 --join 172.17.0.2

# http://*:8500 172.17.0.2

# http://*:8501 172.17.0.3

# http://*:8502 172.17.0.4

Docker 所有容器命令

docker中 启动所有的容器命令

1
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 关闭所有的容器命令

1
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的容器命令

1
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的镜像

1
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

开启SSH登录

使用xshell and xftp

安装

1
sudo apt-get install openssh-server

验证开启SSH

1
ps -e |grep ssh 
1
dpkg --get-selections | grep ssh

image-20220118104032656

如果看到sshd那说明ssh-server已经启动了。

如果没有则可以这样启动 sudo /etc/init.d/ssh start

配置

ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。

1
2
3
4
5
6
7
Port 22
LoginGraceTime 2m
PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes

别的看着弄,上面这几个配置弄好了就成。

image-20220118104744600

RSA秘钥

打开xshell,工具-用户秘钥管理者-生成

下一步

下一步

完成

这么点

点这里

喏,这就是那个公钥

这个秘钥需要复制到Ubuntu 里。

先打开 cd ~/.ssh

定位到文件

打开之后就是下面这些,把下面的内容替换成上面生成的公钥即可。

image-20220118105956280

这么粘

粘贴公钥

连接xshell

先获取IPifconfig,没有的话安装一下sudo apt install net-tools

获取当前IP

配置xshell连接属性

连接xshell

设置用户密码

点击连接

接收并保存

点击接收并保存,选择Public Key,输入刚才设置的密码,点击确定

选择秘钥填充密码

连接成功

连接成功

设置固定IP

每次重启IP都变了,xshell还得重新配置IP,设置固定IP搞定

首先

想要固定IP,需要在Hype-v 管理器中添加

image-20220116145911179

然后新建虚拟机交换机

image-20220116150220744

设置交换机IP

image-20220116150314941

image-20220116150340431

image-20220116150402104

分享Internet

设置完IP之后,

需要Internet访问的话,需要将现在宿主用的网络分享给vethernet(新建虚拟机)

image-20220116150646604

也就是说在 宿主再用的WLAN里点击属性,点击共享选择 vEthernet(新建虚拟交换机),就是刚才咱新建的内部交换机。

修改配置文件

至此,宿主这块设置好了。接下来需要设置子系统 Ubuntu。

先执行

1
vim /etc/netplan/50-cloud-init.yaml

insert 模式 i

image-20220116151058994

1
2
3
4
5
6
7
8
9
10
network:
ethernets:
eth0:
dhcp4: no
addresses: [192.168.137.6/24]
optional: true
gateway4: 192.168.137.1
nameservers:
addresses: [8.8.8.8,114.114.114.114]
version: 2

修改完配置之后,重启网卡。

1
sudo netplan apply

如果通过multipass 的shell 去执行 sudo netplan appyly的话,执行完不报错也没啥反应

也可以选择在 hype-v 中连接 ,在shell中去输入

最后

可以输入 ifconfig

如果报错 需要升级 sudo apt install net-tools

image-20220116151509554

不要在意ip不对,我一共启动了三个虚拟机,分别是 5、6、6为后缀的IP

现在

固定IP算是设置完毕了,超简单.

设置固定IP方法二

第一种方式虽然说设置了,但是不能联网,所以,找各种资料,亲测成功

打印路由表

1
2
3
4
5
6
7
root@gitlab:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.25.160.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-1cd785becad1
172.25.160.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

注意这网关Gateway 是 172.25.160.1

修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@gitlab:~# cd /etc/netplan/
root@gitlab:/etc/netplan# ls
50-cloud-init.yaml 50-cloud-init.yaml111 50-cloud-init.yaml222
root@gitlab:/etc/netplan# cat 50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
addresses: [172.25.160.160/24] #设置静态IP和掩码
gateway4: 172.25.160.1 #设置网关地址
dhcp4: false #禁用DHCP
nameservers:
addresses: [114.114.114.114, 8.8.8.8] # 设置主、备DNS
version: 2
root@gitlab:/etc/netplan# sudo netplan apply

按照上面中这一段修改即可

1
2
3
4
5
6
7
8
9
network:
ethernets:
eth0:
addresses: [172.25.160.160/24] #设置静态IP和掩码
gateway4: 172.25.160.1 #设置网关地址
dhcp4: false #禁用DHCP
nameservers:
addresses: [114.114.114.114, 8.8.8.8] # 设置主、备DNS
version: 2

重启生效

1
root@gitlab:/etc/netplan# sudo netplan apply

安装 FTP

1
2
3
4
5
6
7
8
sudo apt-get install vsftpd
# 设置开机启动并启动ftp服务
systemctl enable vsftpd
systemctl start vsftpd
#查看其运行状态
systemctl status vsftpd
#重启服务
systemctl restart vsftpd
1
2
#修改配置
sudo /etc/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
#存在的修改成酱紫:
listen=NO # 阻止 vsftpd 在独立模式下运行
listen_ipv6=YES # vsftpd 将监听 ipv6 而不是 IPv4,你可以根据你的网络情况设置
anonymous_enable=NO # 关闭匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 启用可以修改文件的 FTP 命令
local_umask=022 # 本地用户创建文件的 umask 值
dirmessage_enable=YES # 当用户第一次进入新目录时显示提示消息
xferlog_enable=YES # 一个存有详细的上传和下载信息的日志文件
connect_from_port_20=YES # 在服务器上针对 PORT 类型的连接使用端口 20(FTP 数据)
xferlog_std_format=YES # 保持标准日志文件格式
pam_service_name=vsftpd # vsftpd 将使用的 PAM 验证设备的名字

multipass 操作指北
http://example.com/2022/01/18/multipass-操作指北/
Author
Harris
Posted on
January 18, 2022
Licensed under