Vagrant介绍

       Vagrant让我们可以通过代码的方式快速地、可重复地创建针对不同虚拟环境的虚拟机,包括Virtualbox、AWS、Docker等。它使得我们可以一次性地、自动创建多个环境相同的虚拟机,对于软件开发和测试尤其有用。

Vagrant和Docker区别

vagrant:Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

区别:Vagrant就是你的开发环境的部署工具;而docker是你的运行环境部署工具。

 基本软件

1、vagrant_2.2.3_x86_64.msi

     官网下载地址:https://releases.hashicorp.com/vagrant/2.2.3/vagrant_2.2.3_x86_64.msi

2、VirtualBox-5.2.26-128414-Win.exe

     官网下载地址:https://download.virtualbox.org/virtualbox/6.0.4/VirtualBox-6.0.4-128413-Win.exe

3、Git-2.20.1-64-bit.exe

     官网下载地址:https://github.com/git-for-windows/git/releases/download/v2.20.1.windows.1/Git-2.20.1-64-bit.exe

      主要使用git提供的命令行工具,提供粘贴复制等功能。

Vagrant基本命令

命令作用
vagrant box add添加box的操作
vagrant init初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up启动本地环境
vagrant ssh通过ssh登录本地环境所在虚拟机
vagrant halt关闭本地环境
vagrant suspend暂停本地环境
vagrant resume恢复本地环境
vagrant reload修改了Vagrantfile后,使之生效(相当于先 halt,再 up)
vagrant destroy彻底移除本地环境
vagrant box list显示当前已经添加的box列表
vagrant box remove删除相应的box
vagrant package打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin用于安装卸载插件
vagrant status获取当前虚拟机的状态
vagrant global-status显示当前用户Vagrant的所有环境状态

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

box是什么

Vagrant开源社区提供了许多已经打包好的操作系统,我们称之为box。

box下载地址

官方镜像:https://vagrantcloud.com/boxes/search

第三方仓库:http://www.vagrantbox.es/ 

安装一个box

1、建立自己的开发环境目录命令

$ mkdir centos

$ cd centos

2、导入box命令

$ vagrant box add {title} {url}

vagrant box add是添加box的命令,{title}是以后创建虚拟机的别名,{url}是下载到本地box的路径,也可以是服务器端的URL

将box镜像添加到本地仓库,有三种方式

1、使用http绝对地址

vagrant box add centos http://box.vagrant.com/centos.box

2、使用本地文件(从协议来说,和上面一样,相当于file:///协议的地址)

vagrant box add centos ./centos.box

3、使用仓库名称

vagrant box add centos centos/centos7

3、导入box命令

$ vagrant box add centos7 E:/vagrant/box/Vagrant-CentOS-7.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7' (v0) for provider:
    box: Unpacking necessary files from: file:///E:/vagrant/box/Vagrant-CentOS-7.box
    box:
==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!

4、初始化命令

$ vagrant init centos7
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.

初始化成功后,vagrant会在当前的初始化目录生成一个Vagrantfile配置文件,我们可以修改它,进行个性化定制。

5、启动命令

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos_default_1549288806840_16331
==> 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:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Connection reset. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: 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! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: 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/centos/ => /vagrant

6、SSH连接安装的虚拟机命令

登录虚拟机的三种方式

1、在开发环境的目录(有Vagrantfile的地方),登录虚拟机

$ vagrant ssh
[vagrant@localhost ~]$

2、使用第三方工具,如secureCRT)或系统ssh命令进行登录,IP为Vagrantfile中指定的hostonly地址,用户名与密码默认都是vagrant

3、在宿主机的命令行,ssh到本地端口的方式登录。观察客户机的22端口映射到宿主机的是多少,一般是2222,用户名与密码默认都是vagrant

$ ssh -p 2222 127.0.0.1

7、打包分发命令

当你配置好开发环境后,退出并关闭虚拟机。在终端里,对虚拟机打包

# vagrant halt         // 在开发环境的目录,关闭centos7
 
# vagrant status       // 确认centos7关机
 
# vagrant package centos7 --output  centos7.box  --vagrantfile Vagrantfile
 
// --output NAME:(可选)设置通过NAME来指定输出的文件名;--vagrantfile FILE:(可选)将Vagrantfile直接封进box中

注:如果网络模式中使用private_network的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:rm -f /etc/udev/rule.d/70-persistent-net.rules

打包完成后会在当前目录生成一个centos7.box的文件,将这个文件分发给其他用户(开发者)。

其他用户只要添加这个 box ,并用其初始化自己的开发目录,就能得到一个一样的开发环境了。

$ vagrant box add centos7 centos7.box       
 
//添加centos7.box,镜像命名为centos7
 
$ vagrant init centos7      
 
// 初始化centos7镜像
 
$ vagrant up

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐