【windows】之搭建Linux虚拟开发环境

目录

一、安装 VirtualBox

二、搭建虚拟机环境

三、Vagrant 常用命令


一、安装 VirtualBox


直接进入官网:https://www.virtualbox.org/ 下载最新的 VirtualBox 软件进行安装,安装教程就是傻瓜式的下一步下一步安装即可。

需要注意的是

  • 想要安装成功需要开启 CPU 虚拟化
  • 开始方式为,在开机启动的时候进入 BIOS 设置面板,在 CPU configuration 下勾选 Intel Vitualization Technology,然后重启。

二、搭建虚拟机环境


一般的流程我们都是下载 Linux 镜像,然后再进行安装,但这种安装方式太麻烦。我们可以利用一种新的技术 Vagrang 来帮助我们快色创建一个虚拟机,只要装了 VirtualBox 或者 WMware,Vagrant 可以帮助我们快速创建出一个虚拟机,因为它有一个镜像仓库。

1、安装 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 的命令提示则表明安装成功。


2、下载 Centos7 镜像

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 中就可以看到已经启动了。
  • 如果要关闭虚拟机可以直接在 VirtualBox 中关闭,下次想要再启动虚拟机时可以使用 vagrant up 命令,也可以直接在 VirtualBox 中启动,效果都是一样的。只是执行 Vagrant 命令需要在 Vagrantfile 所在的目录中进行执行

3、Vagrant 操作虚拟机

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
vagrant@127.0.0.1: 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]
  • box 镜像名称或 id 可以使用 vagrant status 命令查看;
  • 可以使用 --output Name 参数指定打包后的 box 名称,如果不指定的话,默认是 package.box;
  • 可以使用 --vagrantfile Vagrantfile 参数将 Vagrantfile 文件直接封装进 box 中。

三、Vagrant 常用命令


1、查看 Vagrant 版本

vagrant -v/--version

2、查看 Vagrant 下所有 box 列表

vagrant box list

3、初始化 box,会生成 Vagrantfile 文件

vagrant init BoxName

4、添加一个 box

vagrant box add ADDRESS

ADDRESS 可以为以下三种类型:

  • Vagrant 镜像名称:镜像名称可以从 Vagrant 官方镜 像中查看,比如:centos/7
  • URL地址:box 的 URL 地址同样可以从 Vagrant 官方镜 中搜索;
  • 本地 box 文件路径:需要使用 --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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值