Windows下搭建Vagrant+VirtualBox环境

前言

最近在折腾一些东西,需要使用docker,但是我的机器配置很神奇,无法直接安装docker,没得法子我只好曲线救国了—使用Vagrant+VirtualBox。

安装 VirtualBox

下载 VirtualBox 安装包

VirtualBox 下载页面地址(不保证长期有效):

1
https://www.virtualbox.org/wiki/Downloads

我现在的是window版本,具体链接如下(不保证长期有效):

1
https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe

大家注意 vagrant 和 VirtualBox 的版本,不同的版本之间可能会出现兼容性问题,大家最好和我的保持一致,毕竟坑我已经趟过了。virtualbox:6.1.30版本;vagrant :2.2.19

安装vagrant

下载vagrant 安装包

vagrant下载页面地址:

1
https://www.vagrantup.com/downloads
下载界面

直接下载64位的即可,我下载时的版本为vagrant_2.2.19,具体链接如下(不保证长期有效):

1
https://releases.hashicorp.com/vagrant/2.2.19/vagrant_2.2.19_x86_64.msi
安装vagrant

没啥特别的直接next下一步下一步就行,当然可以自行选择安装地址,这个看自己的意愿。

下载虚拟机镜像

这个虚拟机镜像下载的速度真的是很感人!所以我们要先下好镜像,然后直接用命令添加到vagrant的box中就可以了。下载页面的地址如下(不保证长期有效):

1
https://app.vagrantup.com/centos/boxes/7

我下载的是centos7镜像,具体链接如下(不保证长期有效):

别问为什么还使用centos7,问就是习惯了centos。

1
https://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
自定义项目地址

通过 Vagrant 创建虚机需要先导入镜像文件,也就是 box,它们默认存储的位置在用户目录下的 .vagrant.d 目录下,对于 Windows 系统来说,就是 C:\Users\用户名.vagrant.d。如果后续可能会用到较多镜像,或者你的 C 盘空间比较紧缺,可以通过设置环境变量 VAGRANT_HOME 来设置该目录。

window系统

1
2
setx VAGRANT_HOME "D:\ProgramFiles\vagrant\boxData"
setx VAGRANT_HOME "D:\ProgramFiles\vagrant\boxData" /M

linux 系统

1
export VAGRANT_HOME="/path/to/vagrant_home"

window系统下使用cmd执行上述命令后,记得重新打开cmd配置才会生效。

添加本地镜像

我将镜像放在D:\ProgramFiles\vagrant\data目录下,在cmd上执行下面的命令添加镜像:

1
vagrant box add centos/7 ./CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

如果提示没有权限则请使用管理员权限启动cmd

执行完毕提示下面的文字则镜像添加成功:

1
==> box: Successfully added box 'centos/7' (v0) for 'virtualbox'!
新建虚机

还是在D:\ProgramFiles\vagrant\data目录下,执行下面的命令:

1
vagrant init centos/7

出现下面的文字提示则认为初始化成功:

1
2
3
4
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.
启动虚拟机

执行下面的命令之前,记得先启动VirtualBox

1
vagrant up

出现下面的文字提示则认为虚拟机启动成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
D:\ProgramFiles\vagrant\data>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> 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: 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: Configuring and enabling network interfaces...
==> default: Rsyncing folder: /cygdrive/d/ProgramFiles/vagrant/data/ => /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

这个地方坑就比较多了,一是前面提到的vagrant和virtualbox两者版本兼容的问题。二就是中文用户名的问题。前面说到创建成功的镜像文件保存在 C:\Users\用户名.vagrant.d路径下,vagrant采用ruby语言编写会遇到一些编码的问题,碰巧我的用户名也是中文,网上解决方案折腾了半天,最后我直接新建了一个windows用户解决。

接下来你就可以在VirtualBox中看到一个已经启动的虚拟机。

虚拟机启动成功

附上我的Vagrantfile配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "centos/7"
config.vm.network "private_network", ip: "192.168.33.10"

end
登录虚拟机

vagrant默认有两个账户,具体如下:

1
2
账户:vagrant 密码: vagrant
账户:root 密码: vagrant

其实vagrant默认的是使用密钥登录,直接执行vagrant ssh命令即可登录,但是登录的是vagrant账户,但在虚拟机中安装一些软件,例如docker是需要使用root账户权限的,所以该如何解决呢?
vagrant ssh命令登录 虚拟机

直接使用 su命令,然后输入密码 vagrant即可。

可以使用 vagrant ssh-config 查看具体的登录配置:

1
2
3
4
5
6
7
8
9
10
11
D:\ProgramFiles\vagrant\data>vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile D:/ProgramFiles/vagrant/data/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL

上面说到使用vagrant ssh登录虚拟机,但是有些地方还是不太方便,所以还是需要使用专业的终端软件登录虚拟机,这里我使用的是MobaXterm,以前我都是使用xshell+xftp的,无奈后面没法白*嫖,就换了这个MobaXterm,用起来感觉还行。

配置如下

这个host我尝试使用前面Vagrantfile文件中的IP地址 192.168.33.10,但是无法连接。

安装jdk8

接下来我们就登录虚拟机,先安装一下jdk8。下面的步骤都是在虚拟机中操作的。

下载jdk8安装包

Oracle的Java8下载页面地址(不保证长期有效):

1
https://www.oracle.com/java/technologies/downloads/#java8

我选择的是x64 Compressed Archive版本,具体下载地址如下(这个链接应该也会随时失效的):

1
https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.tar.gz?AuthParam=1638083601_4ec49a992915eff50f4be9d904997568
下载地址

可以在window下下载好然后传到Linux里,不过我建议直接在Linux中下载,毕竟就是一个命令的事情:

1
2
3
cd /usr/local/src

wget https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.tar.gz?AuthParam=1638083601_4ec49a992915eff50f4be9d904997568

现在下载需要登录账户了,这里提供一个Oracle登录账户

账户:pigide3064@fxseller.com
密码:Azerty1!

账户随时会失效,若是失效自己百度或者直接注册一个账户吧!

安装jdk8
  1. 创建安装目录

    1
    mkdir /usr/local/java
  1. 将安装包解压至安装目录

    1
    tar -zxvf /usr/local/src/jdk-8u311-linux-x64.tar.gz\?AuthParam\=1638083601_4ec49a992915eff50f4be9d904997568  -C /usr/local/java/
  2. 设置环境变量,将Java添加至环境变量中

    打开文件

    1
    vim /etc/profile

    在文件的末尾处增加

    1
    2
    3
    4
    5

    export JAVA_HOME=/usr/local/java/jdk1.8.0_311
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH

    执行source命令重载profile文件

    1
    source /etc/profile

    添加软连接(这一步不做好像也是可以的)

    1
    ln -s /usr/local/java/jdk1.8.0_311/bin/java /usr/bin/java
  3. 检查效果如何:

    1
    java -version

    结果出现下面的文字则代表java安装完成。

    检查效果

安装docker

在安装docker之前记得先切换到root用户。

  1. 不管三七二十一先执行下面的命令,卸载系统自带的docker。

    1
    2
    3
    4
    5
    6
    7
    8
    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  2. 开始安装docker,执行的相关命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启Docker服务
    sudo service docker start

    # 开机启动
    systemctl enable docker

    参考资料参见我之前的文章 在CentOS7上使用yum安装Docker

安装docker composer

这都是用docker了那容器编排起码也要用一下,这里我就用docker composer了。安装的相关命令如下:

  1. 运行以下命令下载 Docker Compose 的当前稳定版本:
1
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

这里使用的是官方文档里的示例,安装的是1.29.2版本。链接:https://docs.docker.com/compose/install/

  1. 将可执行权限应用于二进制文件:

    1
    chmod +x /usr/local/bin/docker-compose
  2. 测试安装结果:

    1
    docker-compose --version

    如果展现下面提示则代表docker-compose安装完成。

    1
    2
    3
    [root@localhost vagrant]# docker-compose --version
    docker-compose version 1.29.2, build 5becea4c
    [root@localhost vagrant]#

总结

这样我们就完成了Vagrant+VirtualBox环境配置,也在虚拟机中配置好了Java环境和docker。

  • 作者: Sam
  • 发布时间: 2021-11-28 19:25:29
  • 最后更新: 2021-12-09 23:17:10
  • 文章链接: https://ydstudios.gitee.io/post/74299493.html
  • 版权声明: 本网所有文章除特别声明外, 禁止未经授权转载,违者依法追究相关法律责任!