使用Vagrant创建CentOS虚拟机

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

构建CentOS7虚拟机

  1. https://app.vagrantup.com/boxes/search下搜索centos:

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

  1. 执行 vagrant up 启动(这时候最好提前打开VirtualBox),然后会出现以下界面,一直等待完成后即可,在完成后,会在 VirtualBox 的列表里会出现一台正在运行的虚拟机:

  1. 在上面的安装过程中我们会发现,过程非常的缓慢,我们可以用以下的方式加速:

在上面的日志中可以找到这么一行:

Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

后面这个URL就是下载地址了,将它黏贴到迅雷等下载工具下载即可。然后将下载好后的xxx.box文件复制到 vagrant_vm 目录下,并且重命名为 centos7.box(删除centos7.box之外的文件和目录,只保留centos7.box一个文件)

接着在vagrant_vm下运行命令,导入已存在的镜像(box文件):

vagrant box add centos/7 centos7.box

初始化box,接着执行命令:

// 注意此处的名称和上方保持一致
vagrant init centos/7

初始化成功后执行命令启动:

vagrant up

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

常见的几个vagrant命令

- vagrant status

查看虚拟机状态信息

- vagrant halt

关闭已经启动的虚拟机

- vagrant up

启动虚拟机

- vagrant suspend

暂停虚拟机,会保存暂停之前的状态

- vagrant resume

恢复暂停之后的虚拟机

- vagrant reload

重新启动虚拟机

- vagrant destroy

销毁已经创建的虚拟机

- vagrant ssh

命令行的模式链接虚拟机

远程工具连接虚拟机

在使用 vagrant ssh 的实际操作中发现,可能会出现如下的错误:

在 Google上找了很多方法,说是 private key 文件的权限问题,但是都没有解决,后面直接使用ssh连接工具连接成功,具体的操作如下图:

1. 先普通用户登陆

2. 配置root用户登陆

使用 vagrant 用户登陆成功后,可以使用下方命令切换到root用户

su root

// 密码
vagrant

但是这样还是不能直接使用root用户登陆,需要以下的操作:

首先以默认身份登录,切换到root用户后,并修改 sshd 配置文件:

vim /etc/ssh/sshd_config

做如下变动

# PermitRootLogin prohibit-password
PermitRootLogin yes # 允许 root 身份登录
# PasswordAuthentication on
PasswordAuthentication yes # 可以使用密码登录

重启 sshd 服务

systemctl restart sshd

然后使用 vagrant reload 命令直接重启虚拟机,这时我们就可以直接使用 root/vagrant 登陆了。

目录共享

Vagrant的根目录(就是我们一开始创建的vagrant_vm)和虚拟机里的/vagrant目录是共享的。当我们在 vagrant_vm 新建一个文件时,在虚拟机/vagrant的目录也有同样的内容

自定义共享

  • 共享目录配置
config.vm.synced_folder
"your_folder"(必须) //物理机目录,可以是绝对地址或相对地址,相对地址是指相对与vagrant配置文件所在目录
,"vm_folder(必须)" // 挂载到虚拟机上的目录地址
,create(boolean)--可选 //默认为false,若配置为true,挂载到虚拟机上的目录若不存在则自动创建
,disabled(boolean):--可选 //默认为false,若为true,则禁用该项挂载
,owner(string):'www'--可选 //虚拟机系统下文件所有者(确保系统下有该用户,否则会报错),默认为vagrant
,group(string):'www'--可选 //虚拟机系统下文件所有组( (确保系统下有该用户组,否则会报错),默认为vagrant
,mount_options(array):["dmode=775","fmode=664"]--可选 //dmode配置目录权限,fmode配置文件权限 默认权限777
,type(string):--可选 //指定文件共享方式,例如:'nfs',vagrant默认根据系统环境选择最佳的文件共享方式
  • 安装vbguest插件

为防止挂载失败,提示如下图 because the filesystem "vboxsf" is not available 的问题,提前执行该命令安装插件

安装如下的插件即可解决:

vagrant plugin install vagrant-vbguest

关闭更新和下载

config.vbguest.auto_update = false #防止重新安装更新

config.vbguest.no_remote = true #不从远程web端下载
  • 挂载共享目录

编辑vagrant_vm文件夹下的Vagrantfile文件:

在这行下面添加如下配置:

config.vm.synced_folder ".","/vagrant",disabled:true    # 禁用vagrant的默认共享目录,不然有可能挂载失败
config.vm.synced_folder "./data", "/vagrant_data", create:true, owner: "root", group: "root"

配置的意思是将当前路径下的data文件夹和虚拟机的/vagrant_data,拥有者为root,群组为root,如果路径不存在则创建。

修改了Vagrantfile文件需要执行 vagrant reload 重启。重启后我们在data文件夹下新建一个 test.txt 文件,然后连接虚拟机看看是否共享成功

然后再次重启,连接虚拟机去查看/vagrant_data目录下是否共享成功

网络配置

虚拟机私有网络

在 Vagrantfile 中开启网络的配置信息:

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

连接虚拟机,使用 ip addr 查看其IP:

虚拟机公有网络

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

然后重启虚拟机,重启过程中会让你根据当前网络环境选择:

此处显示我的网络适配器的选项是 2,所以此处我输入了 2,重启好后连接虚拟机,查看其IP:

公有网络和私有网络的区别是,公有网络是无线路由器自动分配的IP地址,并且在同一个wifi网络下的其他设备也是可以访问这个IP地址的。

多主机配置

使用Vagrant创建CentOS虚拟机的更多相关文章

  1. ESXi 上创建CentOS虚拟机

    之前介绍了ESXi上添加存储.本篇介绍一下在ESXi上创建CentOS虚拟机. 方法/步骤   登陆ESXi,选择“创建/注册虚拟机” 选择“创建新的虚拟机” 给装的虚拟机命名,并选择操作系统及版本 ...

  2. 如何在VMware中进行创建CentOS虚拟机

    今天给大家分享如何在VMware中创建CentOS虚拟机,CentOS6.7为例进行说明,CentOS7版本亦可以参考该教程,具体的教程如下. 1.之后打开VMware,主页面如下图所示.点击第一个框 ...

  3. vmware创建centos虚拟机

    下载centos 安装之前你需要下载centos镜像:http://mirrors.aliyun.com/ 创建虚拟机 如果还没有安装vmware请参考:https://www.cnblogs.com ...

  4. CentOS8安装VirtualBox,并创建CentOS虚拟机

    安装VirtualBox 执行以下命令并启用VirtualBox和EPEL包仓库 [root@localhost~] dnf config-manager --add-repo=https://dow ...

  5. 在VMware软件下创建CentOs虚拟机

    1.创建新的虚拟机. 打开VMware软件,点击主页内创建新的虚拟机 2.进入新建虚拟机向导 点击典型,点击下一步 3.在下一步中单击稍后安装操作系统 点击下一步 4.选择操作系统类型 因为CentO ...

  6. Git+VirtalBaox+Vagrant创建Linux虚拟机

    文章内容来自Udacity课程:Linux Command Line Basics--Getting Started with the Shell Your own Linux box To lear ...

  7. virtualbox创建centos7虚拟机

    安装Virtualbox 下载安装: 直接到官网上下载,https://www.virtualbox.org/wiki/Downloads 然后一键傻瓜式的安装即可. 设置默认虚拟电脑位置: 管理=& ...

  8. vagrant创建centos7后虚拟机磁盘爆满

    1.问题现象 使用df -h命令,磁盘占用直接99%,明明啥也没干...  2.解决方案 找到C:\Users\你的用户名\.vagrant.d\boxes\centos7\0\virtualbox目 ...

  9. Vagrant 创建虚拟机

    Vagrant  创建虚拟机 1. 下载相关软件 虚拟机软件:vmware  virtualbox Vagrant 软件:vagrant cd /tmpwget http://download.vir ...

  10. 使用Vagrant创建多节点虚拟机集群

    摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机.这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布 ...

随机推荐

  1. Alibaba/IOC-golang 正式开源 ——打造服务于go开发者的IOC框架

    简介: IOC(inversion of control)即控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.IOC-golang 是一款服务于Go语言开发者的依赖注入框架 ...

  2. 淘宝推荐、视频搜索背后的检索技术竟是它!深度揭秘达摩院向量检索引擎Proxima

    简介: 淘宝搜索推荐.视频搜索的背后使用了什么样的检索技术?非结构化数据检索,向量检索,以及多模态检索,它们到底解决了什么问题?今天由阿里巴巴达摩院的科学家从业务问题出发,抽丝剥茧,深度揭秘达摩院内部 ...

  3. Quick BI产品核心功能大图(五)移动端:让数据在更多业务场景中流通

    ​简介:将数据更好的融入日常工作中,一个重要的前提条件就是多端多渠道的数据触达和办公协同能力. Quick BI凭借移动端交互体验,帮助用户随时随地便捷查看报表,并通过在线协同方式,追踪策略的执行落地 ...

  4. 阿里云容器服务差异化 SLO 混部技术实践

    ​简介:阿里巴巴在"差异化 SLO 混合部署"上已经有了多年的实践经验,目前已达到业界领先水平.所谓"差异化 SLO",就是将不同类型的工作负载混合运行在同一节 ...

  5. PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验

    简介: 透明分布式,是PolarDB-X即将发布的能力,它能让应用在使用PolarDB-X的过程中,犹如使用单机数据库一般的体验.与传统的中间件类型的"分布式数据库"相比,有了透明 ...

  6. [GPT] quasar 在 setup() 周期阶段想设置meta信息,如何获取当前的 route 参数动态设置

    在Vue 3 的Composition API(组合式API)中,特别是在 setup() 钩子函数阶段, 由于没有访问到常规的 Vue 实例(this上下文),所以不能直接使用 this.$rout ...

  7. dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突

    有时某个相同命名空间相同名字的类型被两个不同的 NuGet 包定义了,尽管这是非常少见的事情,咱需要使用到其中的一个 NuGet 包的类型,但默认情况下将会因为类型冲突而构建不通过.本文将告诉大家如何 ...

  8. C++里也有菱形运算符?

    最近在翻<c++函数式编程>的时候看到有一小节在说c++14新增了"菱形运算符".我寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,我也不记得有添 ...

  9. 中国ITSM研发创新之路

    沿着 itil v3+java流程引擎 的老套路没办法搞出新的名堂了,所以必须要创新1. 理论创新关于ITIL辩证分析的文章我已经写了很多,不一一赘述.我的观念是与其坐等洋和尚来洗脑宣贯,不如自己主动 ...

  10. 08 ES基本的聚合查询

    目录 按protocol聚合 指定地区,按port聚合 指定地区和时间段,按ip聚合(独立ip 即ip去重) 并且 聚合再求独立ip数 聚合后将聚合结果进行分页的解决办法 子聚合 按protocol聚 ...