虚拟机的创建
大约 2 分钟
虚拟机的创建
创建虚拟机
创建虚拟机方式
比如我们要创建ubuntu 22.04的虚拟机,参考官网资料: https://app.vagrantup.com/ubuntu/boxes/jammy64
方式一:Vagrantfile
# 1. 创建Vagrantfile文件,并填充内容
vi Vagrantfile
# 然后填入Vagrantfile内容
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
end
# 2. 使用Vagrant up命令启动
vagrant up
方式二:指定镜像
# 1. 便捷地创建预设Vagrantfile文件
vagrant init ubuntu/jammy64
# 2. 使用Vagrant up命令启动
vagrant up
当我们运行 vagrant init
命令时,会在当前目录生成 Vagrantfile
配置文件,默认的配置文件如下:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
end
创建过程
创建和启动虚拟机主要有下面四个步骤:
配置网络 | 这里使用NAT模式 |
转发SSH端口 | 这里将虚拟机的22端口转发到主机的2222端口 |
配置ssh用户和密钥对 | 设置用户名vagrant,和秘钥 |
挂载共享目录 | 将虚拟机的 |
连接虚拟机
vagrant ssh
# 语法糖,等同于:
# ssh vagrant@localhost -p 2222
一些默认配置
配置网络
vagrant总是会将虚拟机的第一个网卡设置为NAT (默认值)
配置SSH
转发SSH端口
NAT无法从主机访问虚拟机,为什么可以使用vagrant ssh
连接到虚拟机呢?
这是因为vagrant将虚拟机的ssh端口22
转发到宿主机2222
端口。如果有多个虚拟机,每个虚拟机会转发到不同的端口。
通过vagrant ssh
连接到虚拟机跟使用下列命令是一样的。
ssh vagrant@localhost -p 2222
配置SSH用户
vagrant默认为每个虚拟机创建一个 vagrant
用户,密码为 vagrant
。
这个用户拥有 sudo
权限,默认情况下不启动 root
用户。
配置SSH密钥对
vagrant ssh命令不需要输入密码,通过密钥对免密登录虚拟机。
所有的虚拟机Box打包的时候都使用同一个公开的密钥对。这样子显然是不安全的。
内置的密钥对仅用于第一次创建虚拟机的时候,vagrant会通过这个密钥对登录进虚拟机。然后生成一个新的密钥对,并替换公开的密钥对。
更新Guest Additions
如果要去掉guest additions
版本不匹配的提示信息,可以手动更新。
vagrant plugin install vagrant-vbguest
Vagrant 常用命令
vagrant init ubuntu/jammy64 # 创建Vagrantfile
vagrant up # 根据Vagrantfile创建box镜像
vagrant reload # 重新配置虚拟机
vagrant halt # 关闭虚拟机
vagrant destroy # 删除虚拟机
vagrant suspend # 休眠
vagrant resume # 唤醒
vagrant -v # --version
vagrant -h # --help
vagrant box list