热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Vagrant创建CentOS虚拟机

使用Vagrant创建CentOS虚拟机Vagrant是一款由HashiCorp公司提供的,用于快速构建虚拟机环境的软件。本节我们将使用Vagrant结合OracleVMVirtu

使用Vagrant创建CentOS虚拟机

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


构建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地址的。


多主机配置



推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Nagios可视化插件开发指南 —— 配置详解
    本文详细介绍了Nagios监控系统的配置过程,包括数据库的选择与安装、Nagios插件的安装及配置文件的解析。同时,针对常见的配置错误提供了具体的解决方法。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
  • 构建个人多节点Linux环境(CodeSheep)
    本文介绍如何通过虚拟机搭建一个多节点的Linux环境,这对于学习、实验和项目部署都具有重要意义。文章详细讲解了网络IP设置、节点间通信等关键步骤。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
author-avatar
寡凫lo单鹄官方
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有