【VirtualBox+Vagrant】使用教程

文章目录

  • 前言
    • 要开启cpu虚拟化
    • 默认账号密码
    • 如果按教程来没成功,那就看着视频教程来一遍
    • 如果在cmd里面没有看到VirtualBox的网卡信息
    • 如果配置完毕,还是不能通关xshell连接虚拟机
    • vagrant相关命令执行注意事项
    • 虚拟机的删除
  • 视频教程
  • 下载
  • 配置
    • VirtualBox
  • 初始化虚拟机
    • 生成Vagrantfile文件
    • 启动虚拟机
    • 进入虚拟机
  • 通过VirtualBox操作虚拟机
  • 给虚拟机配置IP
    • 查看VirtualBox虚拟网卡地址
    • 编辑Vagrantfile文件
    • 刷新vagrant
    • 验证ip
    • 开启密码登录
  • 总结
  • 扩展
    • 再新建一个虚拟机
    • 批量新建虚拟机
      • 配置1
      • 配置2
      • 修改配置文件
      • 通过xshell登录

前言

要开启cpu虚拟化

不知道怎么搞看视频教程

默认账号密码

虚拟机默认信息
账号:root
密码:vagrant

如果按教程来没成功,那就看着视频教程来一遍

如果在cmd里面没有看到VirtualBox的网卡信息

1、那就把vagrant和VirtualBox同时都卸载掉(可以通过电脑管家卸载,我是这样的,然后重启),这时候再在cmd里面查看,会发现网卡信息也会清除
2、接着重新安装两个软件,正常的话会发现已经可以看到VirtualBox的网卡信息了

如果配置完毕,还是不能通关xshell连接虚拟机

这里要查看自己配置完ip,是不是没有通过vagrant reload进行刷新重启

vagrant相关命令执行注意事项

文档下通过vagrant前缀执行的相关命令,都是通过cmd进入到vagrantfile所在的目录下执行的

虚拟机的删除

可以直接在VirtualBox里面进行关机、删除。 然后再去文件夹下把相关的目录删除即可,这个没关系,不影响啥。

视频教程

尚硅谷视频
https://www.bilibili.com/video/BV1np4y1C7Yf?p=6
https://www.bilibili.com/video/BV1np4y1C7Yf?p=7

下载

VirtualBox
vagrant

配置

VirtualBox

点击:管理-全局设定-常规,设置虚拟机存储地址
默认C盘,修改为其他地址。比如D盘,K盘
【VirtualBox+Vagrant】使用教程_第1张图片

初始化虚拟机

上面这一步,我是在K盘建了个目录,用户专门存储本地虚拟机文件的
【VirtualBox+Vagrant】使用教程_第2张图片
因为是先下载镜像生成Vagrantfile文件,然后在vagrant同目录下生成相对于的虚拟机文件。
我为了能够后面如果有多个vagrantfile文件时,不那么乱,所以把vagrant文件单独存放

生成Vagrantfile文件

1、新建目录
【VirtualBox+Vagrant】使用教程_第3张图片
2、在目录下执行vagrant init centos/7
生成一个vagrant可执行的centos7镜像的配置文件

启动虚拟机

接着执行命令,vagrant up,启动虚拟机。
这时候会在和learn-rocket文件夹同目录生成一个虚拟机运行的文件夹,该文件夹名称和上面我们新建的名称一样
【VirtualBox+Vagrant】使用教程_第4张图片
启动后,我们就可以在VirtualBox中看到这个新建的虚拟机了

进入虚拟机

在cmd执行vagrant ssh,就可以进入虚拟机了。
在这里可以执行一系列的linux命令。

通过VirtualBox操作虚拟机

前面的步骤按部就班的操作一遍后,就可以通过VirtualBox进行虚拟机的开机,重启,关机等操作了

给虚拟机配置IP

这里关不关机好像都可以,我就不关机了。

查看VirtualBox虚拟网卡地址

打开cmd,输入ipconfig,查看网卡信息
【VirtualBox+Vagrant】使用教程_第5张图片

编辑Vagrantfile文件

接着打开learn-rocket文件夹下的Vagrantfile文件,大概在35行,打开注释的内容,修改ip。
可以通过关键字进行搜索:private_network
【VirtualBox+Vagrant】使用教程_第6张图片

刷新vagrant

启动虚拟机
在这里插入图片描述
刷新虚拟机,这里会重新启动!注意,一定要用这个命令,而不是通过VirtualBox重新启动
vagrant reload
【VirtualBox+Vagrant】使用教程_第7张图片

验证ip

1、在cmd通过vagrant up启动虚拟机
2、输入vagrant ssh,进入虚拟机
3、输入ip addr,查看当前虚拟机ip
【VirtualBox+Vagrant】使用教程_第8张图片

开启密码登录

1、查看当前用户
whoami
2、切换为root用户
su root
密码:vagrant
3、修改文件(把PasswordAuthentication no改为yes)
vi /etc/ssh/sshd_config

【VirtualBox+Vagrant】使用教程_第9张图片
4、重启服务
改完后退出文件,执行命令,重启服务
service sshd restart

5、测试通过xshell连接虚拟机
ip:192.168.56.10
端口:22
账号:root
密码:vagrant
【VirtualBox+Vagrant】使用教程_第10张图片

总结

上面执行一遍后,再看下本地文件夹,可以发现,一个虚拟机对应了两个东西:
一个Vagrantfile文件,一个虚拟机文件夹。通过文件夹进行隔离,就算有多个虚拟机,也互不影响

扩展

再新建一个虚拟机

两种方法:
1、通过VirtualBox复制
关机后,通过VirtualBox进行复制,这个我没用过,有想法的可以百度试下
2、把上面的步骤再执行一遍

批量新建虚拟机

参考教程:https://www.bilibili.com/video/BV1np4y1C7Yf?p=343
【VirtualBox+Vagrant】使用教程_第11张图片
通过观看视频,不难发现,虚拟机的生成都是通过Vagrantfile文件的配置来进行生成的。
在文件中配置好,可以通过循环,一次性生成多个虚拟机。

配置1

Vagrant.configure("2") do |config|
	(1..3).each do |i|
		config.vm.defind "myvm-node#{i}" do |node|
			# 设置虚拟机的box
			node.vm.box = "centos/7"
 
			# 设置虚拟机的主机名
			node.vm.hostname="myvm-node#{i}"

			# 设置虚拟机的IP
			node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
			
			# 设置主机与虚拟机的共享目录
			# node.vm.synced_folder "~/DOcuments/vagrant/share", "/home/vagrant/share"
			
			# VirtualBox相关配置
			node.vm.provider "virtualbox" do |v|
				# 设置虚拟机的名称
				v.name = "myvm-node#{i}"
				# 设置虚拟机的内存大小
				v.memory = 4096
				# 设置虚拟机的cpu个数
				v.cpus = 4
			end
		end
	end
end


以前按视频做的时候是成功的,但是这次不知道是不是因为vagrant和virtualbox装的最新版本的原因,失败了。错误信息如下:
【VirtualBox+Vagrant】使用教程_第12张图片

配置2

配置内容来源于:https://blog.csdn.net/llb_3601478/article/details/117483860
这个是成功了

boxes = [
	{
		:name => "myvm-node1",
		:eth1 => "192.168.56.11",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22230
	},
	{
		:name => "myvm-node2",
		:eth1 => "192.168.56.12",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22231
	},
	{
		:name => "myvm-node3",
		:eth1 => "192.168.56.13",
		:mem => "2048",
		:cpu => "2",
		:sshport => 22232
	}
]
Vagrant.configure(2) do |config|
	config.vm.box = "centos/7"
	Encoding.default_external = 'UTF-8'
	boxes.each do |opts|
		config.vm.define opts[:name] do |config|
			config.vm.hostname = opts[:name]
			config.vm.network "private_network", ip: opts[:eth1]
			config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
			config.vm.network "forwarded_port", guest: 22, host: opts[:sshport]
			#config.ssh.username = "root"
			#config.ssh.password = "root"
			#config.ssh.port=opts[:sshport]
			#config.ssh.insert_key = false
			#config.vm.synced_folder ".", "/vagrant", type: "rsync" 
			config.vm.provider "vmware_fusion" do |v|
				v.vmx["memsize"] = opts[:mem]
				v.vmx["numvcpus"] = opts[:cpu]
			end
			config.vm.provider "virtualbox" do |v|
				v.memory = opts[:mem];
				v.cpus = opts[:cpu];
				v.name = opts[:name];
			end
		end
	end
end


【VirtualBox+Vagrant】使用教程_第13张图片

【VirtualBox+Vagrant】使用教程_第14张图片
【VirtualBox+Vagrant】使用教程_第15张图片
【VirtualBox+Vagrant】使用教程_第16张图片

成功!

修改配置文件

接下来是允许通过ip进行远程密码连接
去vagrant文件目录下,打开cmd,进行远程连接
【VirtualBox+Vagrant】使用教程_第17张图片
然后分别执行这一步操作:开启密码登录
【VirtualBox+Vagrant】使用教程_第18张图片

通过xshell登录

【VirtualBox+Vagrant】使用教程_第19张图片
【VirtualBox+Vagrant】使用教程_第20张图片
收工! 2022年5月14日11:56:05 准备吃饭 和 无限乱斗!

你可能感兴趣的:(开发工具,vagrant,centos,linux)