使用vagrant快速创建Linux虚拟机

下载并安装VirtualBox

在VirtualBox官网(https://www.virtualbox.org/wiki/Downloads)下载对应版本的主程序和扩展包程序(有些高级特性,比如USB3.0需要扩展包的支持);在安装完主程序后,直接双击扩展包程序文件安装扩展包即可。
【注意】 在安装VirtualBox之前要开启CPU虚拟化,即重启计算机,进入主板BIOS设置,将Intel Virtualization Technology设置成Enabled。
在这里插入图片描述

下载并安装Vagrant

下载Vagrant(https://www.vagrantup.com/downloads),正常双击vagrant_2.2.14_x86_64.msi下一步安装完即可。安装完后会生成文件C:\Users\Administrator\Vagrantfile。
Vagrant官方镜像仓库:https://app.vagrantup.com/boxes/search

Vagrant基本操作命令

  • 新建虚拟机CentOS
    打开Windows cmd窗口,运行vagrant init centos/7 ,即可初始化一个CentOS系统。
C:\Users\Administrator>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 up即可启动虚拟机。
C:\Users\Administrator>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'centos/7' version '2004.01' is up to date...
==> 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: 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: 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/c/Users/Administrator/ => /vagrant

启动成功后,如下图。
在这里插入图片描述

  • 连接虚拟机
    vagrant ssh 自动使用 vagrant 用户连接虚拟机。
C:\Users\Administrator>vagrant ssh
Last login: Fri Jan 15 06:44:03 2021 from 10.0.2.2
  • 查看当前登录用户
[vagrant@localhost ~]$ whoami
vagrant

root用户没有默认密码,也不能直接登录。需要 root 权限的命令可以通过在命令前添加 sudo 来执行,也可以执行 sudo -i 直接切换到 root 用户。

[vagrant@localhost ~]$ sudo -i
[root@localhost ~]# whoami
root
  • 退出连接
[vagrant@localhost ~]$ exit
logout
Connection to 127.0.0.1 closed.
  • 暂停虚拟机
C:\Users\Administrator>vagrant suspend
==> default: Saving VM state and suspending execution...
  • 恢复虚拟机
C:\Users\Administrator>vagrant resume
==> default: Resuming suspended VM...
==> 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: Machine booted and ready!
  • 重载虚拟机
    执行命令vagrant reload会重启虚拟机,并且重新加载 Vagrantfile 中的配置信息。
  • 停止虚拟机
    执行命令vagrant halt可以关闭虚拟机。
  • 删除虚拟机
    执行命令vagrant destroy可以彻底删除虚拟机,包括整个虚拟机文件。

最后,Vagrant其他的操作命令可查看官网:https://www.vagrantup.com/docs/cli/init.html

自定义配置 Vagrantfile

配置端口转发

端口转发又叫端口映射,就是把虚拟机的某个端口,映射到宿主机的端口上。这样就能在宿主机上访问到虚拟机中的服务。例如启动虚拟机时,默认的 3306 (guest) => 3333 (host) 就是把虚拟机的 SSH 服务端口(3306)映射到宿主机的3333 端口,这样直接在宿主机通过 ssh 客户端访问 127.0.0.1:3333 端口就等价于访问虚拟机的 3306端口。
在这里插入图片描述
在这里插入图片描述
【存在的问题】:如果启动多个虚拟机,很容易就出现宿主机上端口冲突的问题。因此可以使用配置私有网络的方法。

配置私有网络

打开Vagrantfile文件,取消注释下面这行代码,并为虚拟机设置指定的私有网络地址。

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

设置的私有网络地址应参考虚拟机的网络地址,通过ipconfig查看:
在这里插入图片描述则私有网络地址应设置成192.168.56.xx。设置完成后,执行 vagrant reload 命令重载虚拟机。

测试

  • 在宿主机上ping虚拟机
C:\Users\Administrator>ping 192.168.56.10

正在 Ping 192.168.56.10 具有 32 字节的数据:
来自 192.168.56.10 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.56.10 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.56.10 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.56.10 的回复: 字节=32 时间<1ms TTL=128

192.168.56.10 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
  • 在虚拟机中ping宿主机
[vagrant@localhost ~]$ ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_seq=1 ttl=127 time=0.881 ms
64 bytes from 192.168.0.100: icmp_seq=2 ttl=127 time=1.87 ms
64 bytes from 192.168.0.100: icmp_seq=3 ttl=127 time=1.58 ms
64 bytes from 192.168.0.100: icmp_seq=4 ttl=127 time=0.771 ms
64 bytes from 192.168.0.100: icmp_seq=5 ttl=127 time=1.93 ms
64 bytes from 192.168.0.100: icmp_seq=6 ttl=127 time=1.41 ms
64 bytes from 192.168.0.100: icmp_seq=7 ttl=127 time=0.779 ms
64 bytes from 192.168.0.100: icmp_seq=8 ttl=127 time=1.04 ms
64 bytes from 192.168.0.100: icmp_seq=9 ttl=127 time=1.59 ms
64 bytes from 192.168.0.100: icmp_seq=10 ttl=127 time=1.74 ms
64 bytes from 192.168.0.100: icmp_seq=11 ttl=127 time=1.90 ms
^C
--- 192.168.0.100 ping statistics ---
11 packets transmitted, 11 received, 0% packet loss, time 10027ms
rtt min/avg/max/mdev = 0.771/1.412/1.937/0.442 ms

发现宿主机和虚拟机能互相ping通。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值