使用Vagrant创建CentOS虚拟机

  • Vagrant是一款由 HashiCorp 公司提供的,用于快速构建虚拟机环境的软件。本节我们将使用Vagrant结合Oracle VM VirtualBox快速地在 win10 环境下构建CentOS7虚拟机。在此之前需要先安装好 VagrantVirtualBox

构建CentOS7虚拟机

  • 然后在win10任意盘符下创建vagrant_vm目录(注意目录最好不要有中文和空格),然后在该目录下使用 cmd 执行如下命令:
vagrant init centos/7

  • 然后执行如下命令启动:
  • 这时候最好也打开VirtualBox
  • 构建完毕,VirtualBox 的列表里会出现一台正在运行的虚拟机:
vagrant up

  • 这就是我们刚刚通过Vagrant内置的CentOS7虚拟机了。
  • 如果当你执行vagrant up命令后,虚拟机文件下载非常的慢的话,可以使用以下这种方式来构建:

我上方的图中没有显示如下的这一行,你们第一次构建肯定会有的,第一次的话在日志中可以找到如下这么一行:

Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1902.01/providers/virtualbox.box
  • 后面的这个 URL 就是下载地址了,将它黏贴到迅雷等下载工具下载即可。
  • 然后将下载好后的xxx.box文件复制到vagrant_vm目录下,并且重命名为centos7.box(删除centos7.box之外的文件和目录,只保留centos7.box一个文件)
  • 接着运行如下命令:
vagrant box add -name 'centos/7' centos7.box

QQ截图20190328203659.png

添加成功后在执行如下命令进行初始化:

vagrant init centos/7

QQ截图20190328203846.png

初始化成功后执行如下指令进行启动:

vagrant up

QQ截图20190328204151.png

  • 构建成功,效果和一开始在线下载构建是一样的。

连接虚拟机

  • 我们先用如下命令查看一下构建好的虚拟机的状态:
vagrant status

  • 可以看到虚拟机是运行中的状态,我们可以执行如下命令来关闭构建好的虚拟机:
vagrant halt

启动虚拟机的命令如下:

vagrant up

我们也可以使用如下命令来暂停运行中的虚拟机,以保持它的运行状态:

vagrant suspend

  • 暂停后可以使用如下命令来恢复虚拟机进入运行状态
vagrant resume

  • 连接正在运行中的虚拟机的命令如下:
vagrant ssh

  • 重启虚拟机使用的命令如下:
vagrant reload
  • 如果你不想要这个虚拟机的话可以使用如下命令进行销毁
vagrant distroy
  • 退出ssh连接:
Ctrl+D	// 组合键

目录共享

  • Vagrant 的根目录(就是我们一开始创建的vagrant_vm)和虚拟机里的/vagrant目录是共享的。
  • 我们在vagrant_vm目录下新建一个hello.txt文件,内容为hello:

  • 注意你在vagrant_vm目录下新建一个hello.txt文件之后把虚拟机重启一下不然没有
  • 然后连接虚拟机,查看虚拟机/vagrant目录下有什么内容:

  • 说明同步成功。
  • 我们也可以自定义共享路劲,编辑vagrant_vm文件夹下的Vagrantfile文件:

  • 在这46行下面添加如下配置:
config.vm.synced_folder "./data", "/share", create:true, owner: "root", group: "root"

  • 这个配置的意思是将当前路径下的data文件夹和虚拟机的/share目录共享,拥有者为root,群组为root,如果路径不存在则创建。
  • 修改了Vagrantfile文件需要执行 vagrant reload重启。重启后我们在data文件夹下新建一个world.txt文件,然后连接虚拟机看看是否共享成功:

  • 共享成功!
  • 在这途中,遇到了如下问题:
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=0,gid=0 share /share

The error output from the command was:

mount: unknown filesystem type 'vboxsf'
  • 安装下面这个插件可解决这个问题:
  • 安装可不是在虚拟机当中进行输入指令的而是退出虚拟机在最外层输入进行安装
vagrant plugin install vagrant-vbguest

网络配置

虚拟机私有网络

  • Vagrantfile里打开下面这行配置:

  • 然后使用如下命令重启虚拟机
vagrant reload
  • 重启后我们使用如下命令查看是否可以在windows上访问到这个ip:
ping 192.168.33.10

  • 访问成功,连接虚拟机,使用如下命令查看IP:
ip addr

  • 正是我们刚刚配置的那个IP。

虚拟机公有网络

  • 编辑Vagrantfile,将我们刚刚开启的私有网络配置注释,然后开启下面这行配置:

  • 然后重启虚拟机,重启过程中会根据当前网络环境选择:
  • 如果出现如下选项则需要选择我的这台笔记本不知道 为什么我不需要选择需要选择的自行按照下方图中进行选择:

QQ截图20190329204658.png

  • 因为我电脑连接的是家里wifi所以选择第四个选项,重启好后连接虚拟机,查看其IP:

  • 新开一个 cmd窗口,ping 这个地址看是否能通:

  • 公有网络 和 私有网络的区别是,公有网络是无线路由器自动分配的IP地址,并且在同一个 wifi 网络下的其他设备也是可以访问这个IP地址的。
  • 比如我们在 windows 浏览器里输入 http://192.168.28.83/

QQ截图20190329205957.png

img

  • 结果说明公有网络配置成功。

多主机配置

  • 使用 Vagrant 可以轻松地创建多台虚拟主机。下面我们开始通过 Vagrant 来创建两台新的虚拟主机 “prod” 和 “dev”。
  • 在 vagrant_vm 目录下新建一个目录,名称为 multi,然后通过现有的 box 来初始化一个 Vagrantfile 配置:

mkdir multi
cd multi
vagrant box list
vagrant init centos/7
  • 接着编辑 multi 目录下的 Vagrantfile 文件,新增下面两项配置:

config.vm.define "prod" do |prod|
end
config.vm.define "dev" do |dev|
end
  • 运行 vagrant status

  • 可以看到多了两台状态为not created的虚拟机,名称分别为 “prod” 和 “dev”。
  • 我们可以使用 vagrant up 来启动两台主机,也可以通过 vagrant up prod 来单独启动 “prod” 这台虚拟主机。
  • 启动后(第一次启动耗时可能比较长),使用 vagrant status 来查看它们的状态:

  • 通过vagrant ssh 主机名就可以连接上它们了。

网络配置

  • 接下来开始配置网络,让它们之间可以通讯。
  • 我们按照上面介绍的网络配置的方式来为这两台虚拟主机配置私有网络:

prod.vm.network "private_network", ip: "192.168.33.11"
dev.vm.network "private_network", ip: "192.168.33.12"
  • 值得注意的是,在配置私有网络的时候,IP网段不能和Windows主机相同。
  • 配置好后重启这两台虚拟机,然后分别连接这两台虚拟机,看是否能够ping通:

  • 配置成功。

自定义主机名

  • 编辑 Vagrantfile,添加如下配置:

prod.vm.hostname = "bntang-prod"
dev.vm.hostname = "bntang-dev"
  • 重启后,连接虚拟机,可以看到 hostname 已经修改为我们设置的名称了:

多主机的目录共享

  • 默认这两台虚拟主机的 /vagrant 和当前目录 multi/ 是共享的。
  • 我们也可以分别为它们设置不同的共享目录。
  • 编辑 Vagrantfile,添加如下配置:

prod.vm.synced_folder "prod", "/vagrant"
dev.vm.synced_folder "dev", "/vagrant"
posted @   BNTang  阅读(84)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示