C语言 c++ php mysql nginx linux lnmp lamp lanmp memcache redis 面试 笔记 ppt 设计模式 问题 远程连接

vagrant

#镜像列表

http://www.vagrantbox.es/


#官方文档
https://www.vagrantup.com/intro/getting-started/install.html

#命令

https://www.vagrantup.com/docs/cli/


#教程
https://ninghao.net/video/1571

#视频教程
https://ninghao.net/video/1570

vagrant box add {title} {url}
vagrant init {title}
vagrant up

#查看帮助
vagrant help

1、添加box http://vagrantcloud.com
vagrant box add ubuntu/xenial64
vagrant box add centos-7.0-x86_64 E:\box\centos-7.0-x86_64.box #本地添加需指定名字

3、新建一个目录
mkdir test

3、进入新建的目录 用一个box来初始化项目
cd test
vagrant init ubuntu/xenial64

4、开机
vagrant up

 

单个配置文件管理多个虚拟机

 

快照管理


可以针对单个虚拟机操作,需要指定虚拟机的名字
#快照列表
vagrant snapshot list [options] [vm-name]
vagrant snapshot list pub

#生成快照
vagrant snapshot save [options] [vm-name] <name>
vagrant snapshot save dev dev1

#删除快照
vagrant snapshot delete pub pub1


同时针对多个虚拟机操作

#该目录下的多个虚拟都会生成的叫one的快照
vagrant snapshot save one

#同时删除每个虚拟机下叫one的快照
vagrant snapshot save one

 

查看虚拟机状态

全局下可以用唯一id来操作虚拟机,或单独进入某个目录操作

vagrant halt c29d064

 

网络类型(http://www.tuicool.com/articles/v6ZnUzm

Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。

 

端口映射(Forwarded port) ,顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:

config.vm.forwarded_port 80, 8080

以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。

 

默认只转发TCP包,UDP需要额外添加以下语句:

config.vm.forwarded_port 80, 8080, protocol: "udp"

 

优点:

简单易理解

容易实现外网访问虚拟机

缺点:

 

如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。

不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。

私有网络(Private network) ,只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。设定语法为:

config.vm.network "private_network", ip: "192.168.50.4"

优点:

安全,只有自己能访问

 

缺点:

因为私有的原因,所以团队成员其他人不能和你写作

公有网络(Public network) ,虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:

 

config.vm.network "public_network", ip: "192.168.1.120"

公有网络中还可以设置桥接的网卡,语法如下

 

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

优点:

方便团队协作,别人可以访问你的虚拟机

 

缺点:

需要有网络,有路由器分配IP

 

 

Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。

端口映射(Forwarded port) ,顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:

config.vm.forwarded_port 80, 8080

以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。

默认只转发TCP包,UDP需要额外添加以下语句:

config.vm.forwarded_port 80, 8080, protocol: "udp"

优点:

  • 简单易理解
  • 容易实现外网访问虚拟机

缺点:

  • 如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。
  • 不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。

私有网络(Private network) ,只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。设定语法为:

config.vm.network "private_network", ip: "192.168.50.4"

优点:

  • 安全,只有自己能访问

缺点:

  • 因为私有的原因,所以团队成员其他人不能和你写作

公有网络(Public network) ,虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:

config.vm.network "public_network", ip: "192.168.1.120"

公有网络中还可以设置桥接的网卡,语法如下

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

优点:

  • 方便团队协作,别人可以访问你的虚拟机

缺点:

  • 需要有网络,有路由器分配IP

 

常见错误:

1、

songjk@songjk-PC E:\vagrant\book
$ vagrant  reload d73002f
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: 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:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
[default] GuestAdditions 5.0.24 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

# Down the interface before munging the config file. This might
# fail if the interface is not actually set up yet so ignore
# errors.
/sbin/ifdown 'eth1'
# Move new config into place
mv -f '/tmp/vagrant-network-entry-eth1-1497676416-0' '/etc/sysconfig/network-scripts/ifcfg-eth1'
# attempt to force network manager to reload configurations
nmcli c reload || true

# Restart network (through NetworkManager if running)
if service NetworkManager status 2>&1 | grep -q running; then
  service NetworkManager restart
else
  service network restart
fi


Stdout from the command:

Shutting down interface eth0:  [  OK  ]
Shutting down loopback interface:  [  OK  ]
Bringing up loopback interface:  [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.
[  OK  ]
Bringing up interface eth1:  [  OK  ]
Bringing up interface eth2:  Device eth2 does not seem to be present, delaying initialization.
[FAILED]


Stderr from the command:

bash: line 10: nmcli: command not found

更改vagrant默认网络模式后出现

config.vm.network "private_network", ip: "192.168.2.100"

安装 yum install NetworkManager 解决

 

2、解决Vagrant中VirtualBox Guest Additions版本不匹配问题

  如过不匹配可能会导致共享目录失败

vagrant plugin install vagrant-vbguest

  安装好后,重启 vagrant  up 会自动下载安装

http://windrocblog.sinaapp.com/?p=1550

 

posted on 2017-05-29 01:40  思齐_  阅读(1077)  评论(0编辑  收藏  举报