使用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. 为什么我要迁移 SpringBoot 到函数计算

    简介: 面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景. 作者:榴莲   为什么要迁移? 我们的业务有很多对外提供服务的 ...

  2. Fury:一个基于JIT动态编译的高性能多语言原生序列化框架

    简介: Fury是一个基于JIT动态编译的多语言原生序列化框架,支持Java/Python/Golang/C++等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的 ...

  3. 我在阿里巴巴做 Serverless 云研发平台

    简介: Serverless 云研发平台经过这半年多的蜕变,已经从简单的解决工程链路的平台演进成一个面向研发.上线.运维的全生命周期研发平台,后续要解决的命题会集中在用户低门槛上. 作者 | 林昱(苏 ...

  4. [ELK] 生产环境使用 Elasticsearch Docker 镜像的优化选项

    [ 配置内核设置 vm.max_map_count 至少为 262144 ] https://www.elastic.co/guide/en/elasticsearch/reference/curre ...

  5. WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件

    本文记录 WPF 的一个已知问题,在 RepeatButton 上开启 IsManipulationEnabled 漫游支持之后,将会导致触摸长按到 RepeatButton 之上时,不会收到源源不断 ...

  6. dotnet 使用增量源代码生成技术的 Telescope 库导出程序集类型

    本文将告诉大家在 dotnet 里面使用免费完全开源的基于增量源代码生成技术的 Telescope 库,进行收集导出项目程序集里面指定类型.可以实现性能极高的指定类型收集,方便多模块对接入自己的业务框 ...

  7. dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法

    本文告诉大家如何在 UOS 国产系统上安装 dotnet sdk 的方法 使用的 UOS 是 UOS 20 x64 版本,这个系统版本是基于 debian 10 的,可以使用 debian 10 的方 ...

  8. 阿里面试Redis最常问的三个问题:缓存雪崩、击穿、穿透(带答案)

    那提到Redis我相信各位在面试,或者实际开发过程中对缓存雪崩,穿透,击穿也不陌生吧,就算没遇到过但是你肯定听过,那三者到底有什么区别,我们又应该怎么去防止这样的情况发生呢,我们有请下一位受害者. 面 ...

  9. K8s应用---Service代理和kube-proxy转发(9)

    一.k8s为什么要用Service四层代理 1.1 四层负载均衡Service: 概念.原理解读 1.pod ip 经常变化,service 是 pod 的代理,我们客户端访问,只需要访问 servi ...

  10. redis系列02---缓存过期、穿透、击穿、雪崩

    一.缓存过期 问题产生的原由: 内存空间有限,给缓存设置过期时间,但有些键值运气比较好,每次都没有被我的随机算法选中,每次都能幸免于难,这可不行,这些长时间过期的数据一直霸占着不少的内存空间! 解决方 ...