使用 VirtualBox+Vagrant 创建 CentOS7 虚拟机
一、准备工作
1.1 软件下载
-
VirtualBox:Downloads – Oracle VM VirtualBox
1.2 软件安装
- 安装 VirtualBox-7.0.10-158379-Win.exe
- 安装 vagrant_2.3.7_windows_amd64.msi
Notes:
- 安装目录记得修改下,默认安装在 C 盘。
- Vagrant 是没有图形界面的,所以安装完成后也没有桌面快捷方式。
Vagrant 的安装程序会自动把安装路径加入到 PATH 环境变量,所以,这时候可以通过命令行执行 vagrant version
检查是否安装成功:
1.3 VirtualBox 设置
VirtualBox 默认将虚拟机安装在 C 盘,我们最好手动修改一下:
-
打开 VirtualBox
-
依次点击「管理->全局设定->常规」
-
修改虚拟机安装位置
1.4 下载 CentOS7 虚拟镜像
使用 Vagrant 创建虚拟机时,需要指定一个镜像文件,也就是 .box 文件。开始这个 .box 文件并不存在,所以 Vagrant 会先从网上下载,然后缓存在本地目录中,但是这里默认下载往往会比较慢,所以我们最好是提前下载好:
1.5 打包下载
链接:https://pan.baidu.com/s/1sy6-bsfhYsSPoGoVw3RmTw?pwd=3vkr
提取码:3vkr
二、安装 CentOS7
2.1 新建虚拟机
我们在创建虚拟机的时候,会生产一些文件,所以我们最好为每个虚拟机都创建一个独立的文件夹,如我为其创建的文件夹为 D:\VMWare\Vagrant\CentOS7
。
2.1.1 添加 box
-
在 CentOS7 目录下打开 Windows PowerShell,打开方式:Shift + 鼠标右键 -> 在此处打开 Powershell 窗口
-
使用
vagrant box add
指令将 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box 添加到 vagrant 中:vagrant box add D:\VMWare\Vagrant\CentOS7\image\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box --name CentOS7
- add 后的路径替换为你实际镜像的路径
- --name:为这个 box 指定一个名字
-
使用
vagrant box list
验证是否成功:
Notes:我们可以通过指令
vagrant box remove [boxname]
删除添加到 vagrant 中的 box,如vagrant box remove CentOS7
。
2.1.2 新建虚拟机
-
使用
vagrant init [boxname]
指令初始化虚拟机,如vagrant init CentOS7
:- 创建成功后,会在当前文件夹多一个「Vagrantfile」的文件。
-
使用
vagrant up
指令创建并启动虚拟机,并可以通过vagrant status
查看虚拟机启动状态:- running:表明我们的虚拟机启动成功了
2.2 登录虚拟机
2.2.1 使用 vagrant 登录
使用指令 vagrant ssh
登录虚拟机,并可通过使用 $ sudo -i
切换为 root 用户:
2.2.2 使用 SecureCRT 免密登录
在使用 vagrant up
指令后,会在 CentOS7 目录下自动生成一个 .vagrant 目录,在该目录下有个 private_key 文件:D:\VMWare\Vagrant\CentOS7.vagrant\machines\default\virtualbox\private_key。
使用 vagrant 启动 CentOS7 时,有默认的端口,一般是 2222,IP 是 127.0.0.1。有了 IP 和 Port 后,接下来就可以使用 SecureCRT 登录虚拟机了,具体方法如下:
-
打开 SecureCRT 新建连接,输入 IP、Port 和 Username 后,不要着急点 Connect:
-
依次点击「PublicKey->Properties...」,设置 Private_key:
-
最后点击 Connect 即可成功登录:
2.2.2 使用 SecureCRT 密码登录
要想使用密码登录,需要修改配置文件:
[vagrant@10 ~]$ sudo cat -n /etc/ssh/sshd_config | grep PasswordAuthentication
63 #PasswordAuthentication yes
65 PasswordAuthentication no
88 # PasswordAuthentication. Depending on your PAM configuration,
92 # PAM authentication, then enable this but set PasswordAuthentication
- 查找 PasswordAuthentication 的位置
修改第 65 行的 PasswordAuthentication no
为 PasswordAuthentication yes
,具体操作方式如下:
-
编辑 sshd_config:
sudo vi /etc/ssh/sshd_config
:set nu
显示行号:65
跳转到第 65 行- 修改
PasswordAuthentication no
为PasswordAuthentication yes
:wq
保存后退出
-
使用
vagrant reload
重启虚拟机: -
使用密码登录:
- 默认登录密码为:vagrant
2.3 使用私有网络登录
2.3.1 关闭虚拟机
修改前,先关闭虚拟机:
vagrant halt # PowerShell 下执行
如下图所示:
2.3.2 获取 VirtualBox 的 IP
查找方式如下图所示:
2.3.3 修改 Vagrantfile
编辑虚拟机目录下的 Vagrantfile 文件:
- 取消第 35 行的注释,并将 ip 修改为 192.168.56.56(和 VirtualBox 同网段即可)
2.3.4 使用私有 IP 登录
启动虚拟机(vagrant up
),并在 SecureCRT 中使用 192.168.56.56 / 22 登录:
三、设置共享文件夹
3.1 VBoxGuestAdditions.iso
3.1.1 获取文件
VirtualBox 提供了一个增强工具的镜像,默认安装在安装目录下,如:
如果没有,可以去官网下载:Index of http://download.virtualbox.org/virtualbox/7.0.10
3.1.2 将增强工具添加到虚拟集中
-
关闭虚拟机:
vagrant halt
-
打开 VirtualBox,并对虚拟机进行设置:
成功安装后如下图所示:
3.2 修改 Vagrantfile
- 第一个路径:电脑中的目录,可以是绝对地址或相对地址,相对地址是指相对与 Vagrantfile 配置文件所在目录
- 第二个路径:挂载到虚拟机上的目录地址,没有当前目录则创建
3.3 挂载
-
启动虚拟机:
vagrant up
-
登录虚拟机:
vagrant ssh
-
进入根目录:
su root
,密码默认为 vagrant -
依次执行如下指令:
# 如下指令一定是在 root 下执行的 $ yum -y update $ yum -y install gcc $ yum -y install kernel $ yum -y install kernel-devel $ mount /dev/cdrom /mnt $ cd /mnt $ ./VBoxLinuxAdditions.run
-
重启虚拟机:
vagrant reload
-
查看是否成功:
四、vagrant 常用命令
命令 | 作用 |
---|---|
vagrant up | 启动虚拟机 |
vagrant halt | 关闭虚拟机 |
vagrant reload | 重启虚拟机 |
vagrant status | 查看虚拟机状态 |
vagrant ssh | 登录虚拟机 |
exit | 退出虚拟机 |
vagrant box list | 查询 box |
vagrant box add [box 路径] --name [boxname] | 新增 box |
vagrant box remove [boxname] | 删除指定 box |
vagrant destroy | 删除虚拟机 |