Windows 下 使用 Vagrant 来管理 Linux 虚机开发环境(2)

注意:
此处会有个错误,卡在此处:

Bringing machine 'default' up with 'hyperv' provider... ==> default: Verifying Hyper-V is enabled...

经查找,网上许多网友说是vagrant的启动虚拟机时,使用了windows 系统自带的 hyperv 虚拟机导致。但他们的问题大部分是发生在windows 8上,而我的系统为window7 。

最后,看到有网友说需要配置虚拟机 virtualbox 的环境变量(将virtualbox的安装目录添加到环境变量path中),试了下果然解决我的问题。

20151217更新:

网络的配置,网络的配置在worker文件夹下的Vagrantfile 文件中。vagrant创建的虚拟机有3中配置网络模式:

较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:

config.vm.network “forwarded_port”, guest: 80, host: 8080

将配置直接去掉注释“#”即可。guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。

如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP ,在Vagrantfile中配置:

config.vm.network “private_network”, ip: “192.168.56.2”

192.168.56.2 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可。该ip默认帮到eth1上。

如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:

config.vm.network :public_network

此时虚拟机就如同宿主机一样链接到网络中,享有和宿主机一样的网络权限。此时,若ip为自由分配,可使用127.0.0.1地址,

端口使用启动时在命令窗口提示的端口,登陆机器查看分配的ip,即可使用分配的ip登陆。若ip为固定的,可在配置中写好。如下:

config.vm.network :"public_network"ip: "192.168.56.2" #还可设置网桥,以无线为例 -- 此配置需验证,一般只需配置最简即可。 config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

4、链接使用

由于windows不支持 ssh 命令,所以我们需要使用其他的ssh的客户端来链接。就拿我使用的xshell来做说。

在cmd窗口中录入:vagrant ssh。会看到你的主机地址、端口、以及key的存放位置。

D:\vagrant\worker>vagrant ssh `ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use your favorite SSH client with the following authentication information shown below: Host: 127.0.0.1 Port: 2222 Username: vagrant Private key: D:/vagrant/worker/.vagrant/machines/default/virtualbox/private_key

在xshell中添加ssh的key。可以参考 这里

由于我们的key已经生成,所以我们只需导入即可。

工具–>用户秘钥管理–>导入,即可。

Windows 下 使用 Vagrant 来管理 Linux 虚机开发环境

创建好回话后,在点击登录的时候选择 public key ,会看到我们导入的 private_key。

Windows 下 使用 Vagrant 来管理 Linux 虚机开发环境

此处密码不用填写,直接点击登录即可进入系统命令行了。

到这里,便和操作普通的linux的系统一样了。

若想使用root用户登录,见下文 3.3 节。

5、打包分发

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

vagrant package

打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box

并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

三、其他 3.1 常用命令

虚拟机关机:D:\\vagrant\\worker\\>vagrant halt

虚拟机挂起:D:\\vagrant\\worker\\>vagrant suspend

虚拟机恢复:D:\\vagrant\\worker\\>vagrant resume

删除虚拟机:D:\\vagrant\\worker\\>vagrant destory

查看虚拟机运行状态: D:\\vagrant\\worker\\>vagrant status

重启虚拟机: D:\\vagrant\\worker\\>vagrant reload

3.2 Vagrant和VirtualBox配置修改

Vagrant和VirtualBox安装完成后,默认存放虚拟机镜像文件的位置在系统盘。这对于大多数系统盘容量有限的人来说,

很快就会收到“磁盘容量不足”的告警。通过必要的设置将镜像数据移出系统盘。

3.2.1 更改VirtualBox的镜像文件存放位置

具体步骤如下:

1、打开VirtualBox,从菜单项选择 全局设置 (快捷键是 Ctrl-G )

2、选择 常规 里的 默认虚拟电脑位置(M)

3、设置为非系统盘的位置。

4、将原位置中的虚拟机镜像移动到新的位置。

如果在设置前已经安装了虚拟机,那么在Windows 资源管理器中,选择对应目录中的 Vbox 文件,即可将新目录中的虚拟机镜像添加到VirtualBox中。

3.2.2 更改Vagrant的镜像存储位置

Vagrant对于虚拟机的管理分成两个部分:Box和Machine。Box是指初始的未部署的虚拟机镜像文件。这个文件相当于是虚拟机的一个模板,

可以进行无限制次数的复制。Machine,是指处于可运行状态下的虚拟机。当在Vagrant中添加box是,默认Vagrant会将这些虚拟机模板镜像文件存

放在c:\User\.Vagrant.d里。

因此,当使用Vagrant管理的虚拟机模板镜像较多时,这个目录也是比较大的。可以转移到其他磁盘分区上。方法是:

1、将 c:\User\.vagrant.d 目录移动到新的位置

2、设置 VAGRANT_HOME 环境变量指向新的位置即可。

3.3 使用root用户登录虚拟机

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14522.html