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

Vagrant搭建虚拟机环境

用Vagrant和VirtualBox来快速搭建一个开发环境是非常方便的。简单整理一下Vagrant搭建VirtualBox虚拟机的记录。首先安装Vagrant和VirtualBo

        用 Vagrant 和 VirtualBox 来快速搭建一个开发环境是非常方便的。简单整理一下 Vagrant 搭建 VirtualBox 虚拟机的记录。

        首先安装 Vagrant 和 VirtualBox,这一步就直接省略了。自行安装即可。

        什么是 Vagrant,我们这里引用 OSChina 上的一段话来进行解释:


Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用 Chef 创建自动化虚拟环境。功能特性:支持快速新建虚拟机 支持快速设置端口转发 支持自定义镜像打包(原始镜像方式、增量补丁方式) 基本上日常能用到的基础配置都能快速设置 支持开机启动自动运行命令 可以自己写扩展

https://www.oschina.net/p/vagrant?hmsr=aladdin1e1


1.创建一个没有中文路径的目录,我这里创建的路径是

e:\vagrant\mall-node

2.启动virtual box

3.vagrant的仓库

https://app.vagrantup.com/boxes/search

4.执行vagrant init命令

        在新建的目录下执行 vagrant init 命令 

PS E:\vagrant\mall-node> vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

        执行完命令后,在 e:\vagrant\mall-node 下建立了一个 Vagrantfile 文件

5.在 Vagrantfile 文件所在的目录下执行 vagrant up 命令

PS E:\vagrant\mall-node> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: mall-node_default_1668852218722_77593
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...default: Adapter 1: nat
==> default: Forwarding ports...default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private keydefault:default: Vagrant insecure key detected. Vagrant will automatically replacedefault: this with a newly generated keypair for better security.default:default: Inserting generated public key within guest...default: Removing insecure key from the guest if it's present...default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...default: No guest additions were detected on the base box for this VM! Guestdefault: additions are required for forwarded ports, shared folders, host onlydefault: networking, and more. If SSH fails on this machine, please installdefault: the guest additions and repackage the box to continue.default:default: This is not an error message; everything may continue to work properly,default: in which case you may ignore this message.
==> default: Rsyncing folder: /cygdrive/e/vagrant/mall-node/ => /vagrant

执行完成后,查看 virtual box 多了一台虚拟机

6.执行 vagrant ssh 访问虚拟机中的 CentOS 

PS E:\vagrant\mall-node> vagrant ssh
[vagrant@localhost ~]$ ll
total 0
[vagrant@localhost ~]$ pwd
/home/vagrant

7.查看虚拟机的网卡

[vagrant@localhost ~]$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ffinet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0valid_lft 69311sec preferred_lft 69311secinet6 fe80::5054:ff:fe4d:77d3/64 scope linkvalid_lft forever preferred_lft forever

        lo是回环地址,eth0是虚拟机的IP地址,IP地址是10.0.2.15

8.修改ip地址

        打开Vagrantfile文件,搜索“private_network”,可以找到config.vm.network配置项。可以看到里面有个IP地址。我们查看一下我们本机的IP地址,命令如下:

ipconfig

        可以看到virtual box虚拟网卡的ip地址如下:

以太网适配器 VirtualBox Host-Only Network #2:连接特定的 DNS 后缀 . . . . . . . :本地链接 IPv6 地址. . . . . . . . : fe80::d55e:2249:a3ec:9d26%3IPv4 地址 . . . . . . . . . . . . : 192.168.56.1子网掩码 . . . . . . . . . . . . : 255.255.255.0

        可以看到该IP地址为192.168.56.1,我们将对应的Vagrantfile的ip地址修改192.168.56.101,其实只要在一个网段就可以,我这里使用了100。

        修改以后,将其保存。然后关闭虚拟机,启动虚拟机,连接虚拟机,查看它的IP地址。一顿操作命令如下:

[vagrant@localhost ~]$ poweroff
==== AUTHENTICATING FOR org.freedesktop.login1.power-off ===
Authentication is required for powering off the system.
Authenticating as: root
==== AUTHENTICATION COMPLETE ===
Connection to 127.0.0.1 closed by remote host.
Connection to 127.0.0.1 closed.
PS E:\vagrant\mall-node> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...default: Adapter 1: natdefault: Adapter 2: hostonly
==> default: Forwarding ports...default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...default: SSH address: 127.0.0.1:2222default: SSH username: vagrantdefault: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...default: No guest additions were detected on the base box for this VM! Guestdefault: additions are required for forwarded ports, shared folders, host onlydefault: networking, and more. If SSH fails on this machine, please installdefault: the guest additions and repackage the box to continue.default:default: This is not an error message; everything may continue to work properly,default: in which case you may ignore this message.
==> default: Configuring and enabling network interfaces...
==> default: Rsyncing folder: /cygdrive/e/vagrant/mall-node/ => /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
PS E:\vagrant\mall-node> vagrant ssh
Last login: Sun Nov 20 01:45:46 2022 from 10.0.2.2
[vagrant@localhost ~]$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ffinet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0valid_lft 86384sec preferred_lft 86384secinet6 fe80::5054:ff:fe4d:77d3/64 scope linkvalid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 08:00:27:10:a9:1d brd ff:ff:ff:ff:ff:ffinet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute eth1valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe10:a91d/64 scope linkvalid_lft forever preferred_lft forever

        可以看到,在虚拟机中又添加了一块虚拟网卡,并且IP地址是192.168.56.101。

9.使用 finalshell 连接

        打开 finalshell,然后建立 SSH 连接,编辑相关的登录信息,如下图

        注意这里选择公钥登录,用户名填写 vagrant,私钥的文件在 E:\vagrant\mall-node\.vagrant\machines\default\virtualbox 目录下的 private_key 中,大家把路径替换成自己的路径即可。配置好以后进行连接就可以了。

注意:

        如果在执行 vagrant init 后,执行 vagrant up 无法启动虚拟机的话,可以在 Vagrant 仓库中下载 centos/7 文件。如下图:

        下载后通过 add 命令添加即可,命令如下:

vagrant init
vagrant box add centos/7 .box文件路径
vagrant up
vagrant ssh


推荐阅读
  • Vagrantfile介绍
    2019独角兽企业重金招聘Python工程师标准Vagrantfile流浪者的说明书描述需要一个怎样的开发环境:什么类型的虚拟机,怎样配置 ... [详细]
  • PS:此方案适用于Windows、macOS老祖宗说过磨刀不误砍柴工,又说过工欲善其事,必先利其器。这话无论放到何时都适用。上次折腾开发环境是Docke ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 大部分老铁,都是用的mac或者windows,并没有一台linux的主机,如果想在linux上安装docker的话,linux的机器可以通过虚拟化来实现。一般虚拟化通过的软件是Virt ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 最近在使用cocoapods的时候,当输入podinit的时候,iOS项目目录中没有出现对应的Podfile文件.问题描述:使用podinit出现badinterpreter:No ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
author-avatar
ivanjjHelen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有