1 Vagrant 概述

Vagrant 是⼀款⽀持⾃动化虚拟机安装、可配置流程的⽤于管理虚拟机的软件. 主要的优势在于可以提供⼀个可配置、可移植和复⽤的虚拟机环境 (通过定义 Vagrantfile , 类似 Dockerfile ), 并且可以使⽤shell、chef、puppet 等⼯具进⾏部署. 这⾥要注意, Vagrant 并不能单独使⽤, 必须要在⾃⼰的电脑⾥安
装额外的虚拟机软件, ⽐如常⻅的虚拟机软件有: VirtualBox、VMWare 等。

2 Vagrant 安装

Vagrant 官⽹下载地址: https://www.vagrantup.com/downloads.html
VirtualBox 官⽹下载地址: https://www.virtualbox.org/wiki/Downloads
官⽅镜像地址 https://app.vagrantup.com/boxes/search

3 配置默认安装⽬录

3.1 VirtualBox虚拟机⽬录

不想装在C盘的话,按照如下方法改变路径。
打开 VirtualBox 程序,点击 管理/全局设定 菜单项(Ctrl+G), 将 常规 栏⾥的 默认虚拟电脑位置(M) 改为其他磁盘下的路径将原路径C:\Users\user_name.VirtualBox\VirtualBox VMs 下的⽂件移动到新路径下。
重新启动VirtualBox程序,在虚拟机列表⾥,以前建⽴的虚拟机虽然都还在,但已经不可⽤了,将他们全部删除。
双击打开新路径各个⽂件夹⾥的vbox⽂件,将建⽴的虚拟机重新导⼊。

3.2 vagrant配置⽂件的位置

将 C:\Users\user_name.vagrant.d 移动到新的位置
新建环境变量 VAGRANT_HOME ,并指向新路径


下载好box以后一路默认安装下去就行了。

4 安装 CentOS

这⾥通过 centos 7 来做个例⼦, 来快速安装⼀个 centos 7 的虚拟机

  1. ⾸先可以通过 Vagrant Cloud ⽹站去查找需要的镜像, 展示出来的标题就是 box 名称, ⽐如
    centos/7 就是⼀个 box (可以简单理解为镜像)


2. 新建⼀个⽬录 (⽐如: ~/virtual-os/centos7/) , 然后执⾏如下命令在当前⽬录初始化⼀个 Vagrantfile
配置⽂件

vagrant init centos/7



执⾏如下命令, 启动虚拟机

vagrant up



通过如下 status 命令可以查看当前虚拟机状态 (running 表示正在运⾏

vagrant status

虚拟机启动完成之后, 通过如下命令 ssh 登陆到虚拟机中 (默认的⽤户名和密码都是 vagrant,如上图中有的

通过执⾏ halt 命令关闭虚拟机, destroy 命令销毁虚拟机

vagrant halt
vagrant destory

可以看到分配的地址:10.0.2.15/24

5 修改网络配置

这是win11的界面,win10 找也是差不多的,类似这个。

修改Vagrantfile

config.vm.network "private_network", ip: "192.168.56.20"

修改前:

修改后:

修改完成后,重启启动vagrant

vagrant reload

检查宿主机和virtualBox之间的通信是否正常
[vagrant@localhost ~]$ ping 本机地址

开启远程登陆,修改“/etc/ssh/sshd_config”

用root账号去改。root 密码是 vagrant

可以看到现在是root

再次输入

vi /etc/ssh/sshd_config

可以看到

PermitRootLogin yes
PasswordAuthentication yes


改了就行。

然后重启SSHD

systemctl restart sshd

使⽤Xshell或SecureCRT进⾏远程连接即可

6 基本命令

7 配置文件

常⽤相关配置说明
Vagrantfile 就相当于是启动虚拟机的配置⽂件, 常⻅的配置如下

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|# 定义 box 名称, 与 init 时指定的名称⼀致config.vm.box = "centos/7"# 定义虚拟机名字config.vm.hostname = "vagrant"# 定义 box 镜像位置, 默认不需要指定config.vm.box_url = "{filepath}"# 将主机共享的⽬录挂载到虚拟机中config.vm.synced_folder "/path/to/share/host", "path/to/mount/vm"# 设置虚拟机的⽹络模式# 此处指定为映射关系, 将虚拟机的 80 端⼝映射到主机的 8080 端⼝上config.vm.network "forwarded_port", guest: 80, host: 8080# 启动时执⾏ shell 命令(后⾯单独讲)config.vm.provision "shell", inline: "echo hello provisio."
# 设置默认 ssh ⽤户(默认为 vagrant)config.ssh.username = "vagrant"# 设置默认 ssh 密码(默认为 vagrant)config.ssh.password = "vagrant"# 设置 ssh 的端⼝config.ssh.port = 22# 指定基于 virtualbox 的⼀些配置(资源相关)config.vm.provider "virtualbox" do |v|v.gui = false # 启动时, 不显示 virtualbox 的GUI界⾯v.name = "my_vn" # virtualbox 中虚拟机的名字v.cpus = 2 # 指定虚拟机的CPU核数v.memory = "1024" # 指定虚拟机的内存, 单位为 Mbend
end

虚拟⽹络配置说明
Vagrantfile 中 config.vm.network 的设置, 这⾥需要⾸先说明⼀下 Vagrant ⽀持的⼏种⽹络模式的区别:
NAT 模式 (默认)
NAT (Network Address Translation), ⽹络地址转换. Guest 访问⽹络的所有数据都是由主机提供的, Guest 并不真实存在于⽹络中, 主机与⽹络中的任何机器都不能查看和访问到 Guest 的存在. 所以只能 Guest 单向访问 Host , Host 和⽹络中的其他机器⽆法访问到 Guest . 就拿上⾯的例⼦来讲,
Guest 是能够 ping 通主机, 但是主机是 ping 不通 Guest 的.
Bridged Adapter ⽹桥模式
通过主机⽹卡, 架设了⼀条桥连⼊到⽹络中. 因此, Guest 能被分配到⼀个⽹络中独⽴的 IP , 所有⽹络功能和真实机器是⼀样的. 在⽹桥模式下的虚拟机, 可以认为是真实的计算机, 和主机是可以相互ping 通的, 并且与⽹络中的其他主机也是可以相互访问的.
Host-only 模式
该模式下只有主机才能访问 Guest, 其他机器都⽆法访问 Guest, 同样的, Guest 也能访问主机, 只有和宿主机是互通的, 其他机器⽆法访问.

⼏种配置⽅式⼤致列举⼀下

# 映射 guest 端⼝到主机上
config.vm.network "forwarded_port", guest: 80, host: 8080
# 配置成 host-only 模式, 指定其在私有⽹络中的 ip
# 不同 Guest 之间可以通过该 ip 互通
config.vm.network "private_network", ip: "192.168.33.10"
# Bridge模式, 也可以指定 ip 或者桥接⽹卡
config.vm.network "public_network"
config.vm.network "public_network", ip: "10.1.2.61"
config.vm.netword "public_network", bridge: "en0: Wi-Fi (Wireless)"

8 模拟多台虚拟机

这⾥就直接看⼀个配置⽂件吧, 如果看完前⾯的说明, 基本也知道这个配置⽂件是在做啥了~

Vagrant.configure("2") do |config|# 定义应⽤服务器config.vm.define :web do |web|web.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]endweb.vm.box = "centos/7"web.vm.hostname = "web"web.vm.network :private_network, ip: "11.11.1.1"end# 定义DB服务器config.vm.define :db do |db|db.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]enddb.vm.box = "centos/7"db.vm.hostname = "db"db.vm.network :private_network, ip: "11.11.1.2"end# 定义缓存服务器config.vm.define :redis do |redis|redis.vm.provider "virtualbox" do |v|v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]endredis.vm.box = "centos/7"redis.vm.hostname = "redis"reids.vm.network :private_network, ip: "11.11.1.2"end
end

这⾥定义的虚拟机都是互通的, 这样就可以在单机中模拟分布式机器的情况啦, 这样我们在学习 k8s 的话,这种⽅式应该还是挺轻松的, 通过⼀个配置⽂件可以管理多台虚拟机。

Vagrant的安装和使用(附带安装Centos 7教程)相关推荐

  1. 【centos】安装nvida CUDA平台附带安装cudnn库及TensorRT8

    目录 1.安装 CUDAToolKit 2.安装cudnn库 3.附录:关于CUDA 4.英伟达GPU相关术语 1.安装 CUDAToolKit 使用 lspci | grep -i nvidia 列 ...

  2. 登录接口已修复梦想贩卖机V2 2.0.4 修复版,附带安装教程。

    测试环境: 系统环境:CentOS Linux 7.6.1810 (Core) 运行环境:宝塔 Linux v7.0.3(专业版) 网站环境:Nginx 1.15.10 + MySQL 5.6.46 ...

  3. 使用硬盘,安装双系统,Win7+CentOS

    我用那个U盘装了很多次都不行,都是说找不到文件.最后就找了一篇博客看如何安装双系统,最后发现原来可以用硬盘安装的.经过5个多小时终于完成了.^-^. 1.首先是分区,可以使用Window7自带的磁盘管 ...

  4. centos 安装java web_Centos上安装java web的环境

    Centos上安装java web的环境 ,本次例子尽量不用yum形式安装(因为我不知道yum安装怎么指定目录,想把java,tomcat,mysql安装到指定的文件夹下,好管理). (java和to ...

  5. linux编译器6,Linux安装gcc编译器详解(CentOS 6.5 64位系统)

    本次安装针对CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ...

  6. python (16) 如何在linux下安装lxml(pip安装,ubuntu下,centos下)

    首先需要明白lxml包依赖其他包,必须先安装其他包然后再安装lxml 安装python-pip:方便安装python的第三方包 [root@******/]# wget https://bootstr ...

  7. Linux/CentOS下安装Apache/SVN/Subversion图文详解教程

    Linux(CentOS)下安装Apache+Subversion(图文教程) 服务器版本和安装软件 服务器版本: RedHatCentOS 5.5 32 bit 安装软件: apr-1.3.5.ta ...

  8. Linux/CentOS安装MySQL(RPM安装、编译安装)

    2019独角兽企业重金招聘Python工程师标准>>> Linux/CentOS安装MySQL(RPM安装.编译安装) 目前最常用的MySQL安装方法也就是采用Yum安装RPM包,或 ...

  9. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)

    安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一) CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更 ...

  10. centos 6.8安装git_Centos(6/7)安装GitLab超详细教程

    切换阿里yum源 阿里巴巴开源镜像站:https://opsx.alibaba.com/mirror 1.备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum ...

最新文章

  1. Linux中与命令相关的命令
  2. asterisk 配置 mysql_Asterisk的配置详解
  3. Opencv2.4.9源码分析——HoughLinesP
  4. 板邓:PHP获取当前页面url地址、参数
  5. linux怎么64位,在linux下如何查看CPU是否支持64位
  6. vmware虚拟机克隆CentOS7 出现的网络问题解决办法
  7. linux环境安装LFTP_02
  8. pandas读取excel带汉字的列头_Pandas在读取csv时如何设置列名--常用方法集锦
  9. Spring知识点一站到底(转载)
  10. VINS(三)IMU预积分
  11. curl有时获取不到数据 什么原因导致_缓存击穿导致 golang 组件死锁的问题分享...
  12. WebBrowser.ObjectForScripting 属性的使用
  13. matlab 获取axes图片,matlabaxes显示图片
  14. Linux深度学习框架安装
  15. python求斜边上的高_直角三角形斜边上的高如何求?
  16. TcaplusDB君 · 行业新闻汇编(一)
  17. Linux内核 eBPF基础:perf(2):perf性能管理单元PMU的注册
  18. 神经网络实现手写数字识别
  19. <van-list> </van-list>列表组件的使用
  20. 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)

热门文章

  1. 记6年后第一次面试(耻辱面)
  2. 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲?是谁唱的?求科普!...
  3. 华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?
  4. Python入门(二十七)——线程深入复习(.tart()、 .join()、.setDaemon(True))
  5. Jackson (一)下载
  6. 数据产品经理技能图谱(含与数据分析师关键技能对比)
  7. 包头事业单位计算机考试试题,内蒙古包头市事业单位考试题库及答案(事业编笔试题库)...
  8. Vue+element 实现表格的动态增加行
  9. 更改airsim无人机模型
  10. Centos7 开启图形界面