一、安装 VirtualBox
二、搭建虚拟机环境
三、Vagrant 常用命令
直接进入官网:https://www.virtualbox.org/ 下载最新的 VirtualBox 软件进行安装,安装教程就是傻瓜式的下一步下一步安装即可。
需要注意的是:
CPU 虚拟化
;BIOS
设置面板,在 CPU configuration
下勾选 Intel Vitualization Technology
,然后重启。一般的流程我们都是下载 Linux 镜像,然后再进行安装,但这种安装方式太麻烦。我们可以利用一种新的技术 Vagrang 来帮助我们快色创建一个虚拟机,只要装了 VirtualBox 或者 WMware,Vagrant 可以帮助我们快速创建出一个虚拟机,因为它有一个镜像仓库。
我们先从 Vagrant 官网:https://www.vagrantup.com/ 下载软件并安装,安装成功之后需要重启系统生效。
重启生效之后,在 cmd 中输入 vagrant 命令:
D:\Vagrant> vagrant
Usage: vagrant [options] <command> [<args>]
-h, --help Print this help.
Common commands:
autocomplete manages autocomplete installation on host
box manages boxes: installation, removal, etc.
cloud manages everything related to Vagrant Cloud
destroy stops and deletes all traces of the vagrant machine
global-status outputs status Vagrant environments for this user
halt stops the vagrant machine
help shows the help for a subcommand
init initializes a new Vagrant environment by creating a Vagrantfile
......
如果显示 vagrant 的命令提示则表明安装成功。
1)、初始化镜像
使用命令 vagrant init centos/7
初始化镜像:
D:\Vagrant> 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.
镜像的名称可以参考 Vagrant 镜像仓库:https://app.vagrantup.com/boxes/search ,使用官网已经命名好的镜像即可。
初始化成功之后,会在执行初始化命令的目录下生成 Vagrantfile
文件,以后操作该镜像需要在该文件所在目录下操作。
2)、启动镜像
使用 vagrant up
命令启动镜像:
D:\Vagrant> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v2004.01) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
Download redirected to host: cloud.centos.org
default:
下载镜像过程比较漫长,也可以先把镜像文件下载到本地再进行加载,但官网上的镜像下载太慢了,我们可以使用国内的镜像下载地址:
然后使用 vagrant box add
命令添加,再使用 vagrant up
启动虚拟机(记得要启动 VirtualBox):
# 添加本地 box 镜像
D:\Vagrant> vagrant box add centos/7 D:\ThunderDownload\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos/7' (v0) for provider:
box: Unpacking necessary files from: file:///D:/ThunderDownload/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
box:
==> box: Successfully added box 'centos/7' (v0) for 'virtualbox'!
# 启动镜像
D:\Vagrant> 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: Vagrant_default_1600949307327_41750
==> 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:
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/d/Vagrant/ => /vagrant
default: Rsyncing folder: /cygdrive/d/Vagrant/ => /vagrant
表示虚拟镜像启动成功了,然后可以使用 ctrl + c
退出,此时虚拟机仍然在运行的,从 VirtualBox 中就可以看到已经启动了。1)、连接虚拟机
Vagrant 启动过程中已经给出了默认的 ssh 信息:
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
这时我们可以使用 vagrant ssh 开启 ssh,并登陆到 centos7:
D:\Vagrant> vagrant ssh
[vagrant@localhost ~]$ whoami # 查看当前用户
vagrant
[vagrant@localhost ~]$ ls / # 查看根目录
bin dev home lib64 mnt proc run srv sys usr var
boot etc lib media opt root sbin swapfile tmp vagrant
[vagrant@localhost ~]$ exit # 退出
logout
Connection to 127.0.0.1 closed.
D:\Vagrant>
如果执行命令过程中报错:
D:\Vagrant> vagrant ssh
[email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
这是 private_key
文件的权限不足问题导致的,用管理员的方式启动 cmd 窗口再执行也还是没用,需要对 private_key
文件权限进行设置。
找到 Vagrantfile
文件所在的目录下 .vagrant\machines\default\virtualbox\private_key
文件,右键 >> 属性 >> 安全 >> 高级,点击左下角的 添加(D) :
输入当前用户名(格式为:主机名\用户名),然后点击检查名称,如果正确则会通过。添加成功之后回到高级安全设置窗口中删除其他没用的权限,可以直接点击左下角的 禁用继承 来达到效果。
设置完成后,再次输入 vagrant ssh
命令就可以成功接入虚拟机了。
2)、设置网络环境
由于 Vagrant 使用的网络方式是网络地址转换NAT(端口转发),如果其他主机要访问虚拟机,必须由 windows 端口如3333 转发给虚拟机端口如 3306。这样每在 linux 里安一个软件都要进行端口映射,很不方便(也可以在virualBox里挨个设置)。
我们想要给虚拟机一个固定的ip地址,windows 和虚拟机可以互相 ping 通。设置的方式可以是在虚拟机中配置静态 ip,也可以在 Vagrantfile 配置文件中修改虚拟机 ip。
打开 Vagrantfile 找到 config.vm.network "private_network", ip: "192.168.33.10"
这一行,原本是被注释的,我们需要把它打开,然后修改 IP,IP 地址需要根据 Windows 本身的 IP 来设置,在 cmd 中输入命令 ipconfig 命令查看:
D:\Vagrant> ipconfig
Windows IP 配置
以太网适配器 VirtualBox Host-Only Network:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::754c:b80a:65b3:3a38%7
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
找到 VirtualBox Host-Only Network 下的 IPv4 地址,根据这个地址我们可以修改虚拟机的地址为 192.168.56.x,最后一个数据不能为 1:
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.56.10"
配置完保存后我们可以使用命令 vagrant reload 重启虚拟机,这时在虚拟机中使用 ip addr
就可以查看到IP地址修改成功了:
[vagrant@localhost ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
valid_lft 86327sec preferred_lft 86327sec
inet6 fe80::5054:ff:fe4d:77d3/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:e8:2f:86 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.10/24 brd 192.168.56.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fee8:2f86/64 scope link
valid_lft forever preferred_lft forever
并且windows 和 Linux 虚拟机可以互相 ping 通了。
3)、开启 ssh 远程登录
修改 /etc/ssh/sshd_config
文件:
[vagrant@localhost ~]$ sudo vi /etc/ssh/sshd_config
# 修改内容如下
PermitRootLogin yes
PasswordAuthentication yes
然后重启 sshd:
[vagrant@localhost ssh]$ sudo systemctl restart sshd
我们也可以切换到 root 用户,默认密码为 “vagrant”:
[vagrant@localhost ssh]$ su root
Password:
[root@localhost ssh]#
这样我们就可以使用 XShell 或 SecureCRT 进行远程连接了。
4)、打包自己的 box
打包命令为:
vagrant package [BoxName|id]
vagrant status
命令查看;--output Name
参数指定打包后的 box 名称,如果不指定的话,默认是 package.box;--vagrantfile Vagrantfile
参数将 Vagrantfile 文件直接封装进 box 中。1、查看 Vagrant 版本
vagrant -v/--version
2、查看 Vagrant 下所有 box 列表
vagrant box list
3、初始化 box,会生成 Vagrantfile 文件
vagrant init BoxName
4、添加一个 box
vagrant box add ADDRESS
ADDRESS 可以为以下三种类型:
centos/7
;--name
参数指定 box 名称,或者在 add 后面直接添加 box 名称:vagrant box add [BoxName] ADDRESS
5、删除 box
vagrant box remove BoxName
6、启动 box
vagrant up
7、关闭 box
vagrant halt
8、暂停 box
vagrant suspend
9、回复本地环境
vagrant resume
10、重新加载 Vagrantfile,相当于先 halt 再 up
vagrant reload
11、移除本地环境
vagrant destroy
12、查看虚拟机状态
vagrant status
13、查看当前用户的所有环境状态
vagrant global-status
Vagrant 更多操作命令可以参考官方文档:https://www.vagrantup.com/docs