使用VirtualBox搭建Alpine虚拟机开发环境

使用VirtualBox搭建Alpine虚拟机开发环境

简介

本文的初衷是手动搭建一个跨平台,可移植,轻量型的Linux虚拟机开发环境,以替代 Vagrant

Vagrant 实际上就是在虚拟机(如VirtualBox)的基础上,再封装一层管理脚本,提供了许多预配置的虚拟机镜像文件, 一个命令就可以下载+安装+启动。本身是很好的工具,批量部署很有优势。

但有几个缺点:比如引入了不必要的复杂性,比如几个流行的Linux发行版的镜像更新很不及时,比如自动化脚本出错还得手动分析问题等等。

本文撰写时, 已放弃 vagrant。使用原生 virtual box 虚拟机。简单!干净!

Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版。很适合做轻量型的定制化开发环境。

测试环境

宿主机 Windows 10 专业版
Virtual Box 6.1.14 r140239 (Qt5.6.2)
Alpine Linux alpine-virt-3.12.0-x86_64.iso

1. 安装VirtualBox

到官网 https://www.virtualbox.org 下载最新版本的VirtualBox安装包和扩展包。

: 扩展包版本必须和安装包版本一致。

2. 安装扩展包

下载地址:https://www.virtualbox.org/wiki/Downloads

找到 Oracle VM VirtualBox Extension Pack ,点击 All supported platforms 即可下载。

装好Virtualbox后,打开主界面,点击:菜单 -> 管理 -> 全局设定 -> 扩展 -> 添加。选中扩展包。

:此处默认为最新版本. 旧版则下载旧版扩展包 VirtualBox older builds

3. 下载Alpine Linux安装盘

https://alpinelinux.org/downloads/

可下载虚拟机专用版. 如 alpine-virt-3.12.0-x86_64.iso 光盘文件仅40M

4. 虚拟机设置

4.1 新建 VirtualBox 虚拟机

类型选择 “Linux 2.6 / 3.x / 4.x (64-bit)”。

4.2 创建虚拟硬盘

可选择100G,反正是动态扩展。虚拟硬盘文件类型 默认即可.

VDI: vbox自己的虚拟硬盘格式
VMDK: VMWare等其他虚拟化厂商支持的虚拟硬盘格式
VHD: Microsoft支持的虚拟硬盘文件格式
Parallels,这个大家好像见得不多,他也是一个虚拟化厂商(2008年成立)

4.3 网络 设置

连接方式选择 桥接网卡, 勾选 接入网线。 virtual box 默认为 网络地址转换(NAT)

桥接网卡: 创建一个和宿主机并列的, 处于相同局域网的独立网络环境, 宿主机可通过局域网IP访问.
网络地址转换NAT: 创建一个宿主机下的网络环境, 宿主机使用端口转发与其交互.

4.4 共享文件夹 设置

共享文件夹路径(宿主机目录) - 共享文件夹名称(www) - 挂载点(虚拟机目录)(/root/www)

4.5 挂载系统安装盘

存储 - 控制器 - 分配光驱 选择虚拟光盘文件,找到我们前面下载的 AlpineLinux的iso文件.

5.5 其他设置

系统–处理器–启用 PAE/NX, 使能硬件加速, USB设置成3.0版本

5. 安装AlpineLinux

启动虚拟机,用光盘启动,然后用root登录AlpineLinux,没有密码。敲入命令:

  setup-alpine

跟随命令行向导一步一步执行:

不清楚一律默认,这样不容易出问题.
选择时区时, 选择 Asia/Shanghai
选择安装源时,敲入 f 让系统自己寻找一个最快的源
选择安装目标盘时,根据具体磁盘名选择, 一般是 sda
选择分区类型时,敲入 sys

磁盘格式化并写入操作系统数据,会提示擦除所以数据,确认输入 y 。耐心等待

WARNING: Erase the above disk(s) and continue? [y/N]: y

没几分钟就安装完了.

最后:退出光盘,重启虚拟机

6. 设置SSH局域网访问。

虚拟机设置–网络–网卡1–连接方式–桥接网卡。默认值为: 网络地址转换(NAT)

6.1 查看虚拟机局域网IP

ip address show

6.2 配置SSH服务端

Alpine 默认关闭root用户ssh登录。更改 sshd_config 文件,开启root登录。

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

6.3 重启 ssh 服务

rc-service sshd restart

7. Virtual Box 安装增强功能

7.1 挂载光盘安装增强功能

挂载宿主机 Virtual Box 安装目录下的 VBoxGuestAdditions.iso 光盘文件安装。

Virtual Box的Alpine系统挂载外部ISO光盘文件 http://blog.catmes.com/archives/alpine-sio.html

7.2 使用 apk 工具安装增强功能(推荐)

去掉 repositories 仓库中 community 的注释,开启 community 社区源:

vim /etc/apk/repositories

http://mirrors.ustc.edu.cn/alpine/v3.12/main
http://mirrors.ustc.edu.cn/alpine/v3.12/community
......

因为 virtualbox-guest-additions 和 docker 包都是在community仓库里面。

安装增强扩展

apk add virtualbox-guest-additions

8. 挂载宿主机共享目录

mkdir -p /root/www
modprobe -a vboxsf
mount -t vboxsf www /root/www

www 目录为 virtual box --设置–共享文件夹,设置的共享名称。可设置多个共享目录

开机启动自动挂载:

echo "www    /root/www vboxsf    defaults    0  0" >> /etc/fstab

9. 网卡配置

vi /etc/network/interfaces

iface eth0 inet dhcp 改为 iface eth0 inet static
参照宿主机IP网段,配置对应的 address, netmask, gateway 项。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.102
        netmask 255.255.255.0
        gateway 192.168.0.1
        hostname localhost

auto eth1
iface eth1 inet dhcp

重启服务

    service networking restart

10. 安装 docker docker-compose pip

安装并启动docker:

apk add docker
addgroup <username> docker
service docker start

使之随机启动:

ln -s /etc/init.d/docker /etc/runlevels/default/docker

rc-update add docker boot

安装 docker-compose

apk add docker-compose

Docker国内镜像加速:

vi /etc/docker/daemon.json:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

docker-compose 无法使用,可能是因为pip未安装

localhost:~# docker-compose
-ash: docker-compose: not found
localhost:~# pip -V 
-ash: pip: not found

apk add pip 提示找不到包。百度无解,谷歌后,得知应如下安装 pip 才是正解:

apk add py-pip

alpine Docker https://wiki.alpinelinux.org/wiki/Docker

11. 虚拟硬盘文件格式的转换

Windows7 能够引导 vhd 格式的虚拟硬盘,而 VirtualBox 的虚拟硬盘文件默认是 vdi 格式的。可以用 VBoxManager.exe来转换。

VBoxManager 存在于VirtualBox的安装目录下。

vmdk转换成vdi

VBoxManage.exe clonehd source.vmdk rename.vdi --format VDI

vdi转换成vmdk

VBoxManage.exe clonehd source.vdi rename.vmdk --format VMDK

vdi转换成vhd

VBoxManage.exe clonehd source.vdi rename.vhd --format VHD

运行命令后,原文件会保留,并创建一个新的硬盘文件。


ALPINE LINUX虚拟机安装过程 https://www.freesion.com/article/7100646745/
virtualbox增强功能-VBoxGuestAdditions安装 https://www.seotest.cn/jishu/28449.html
使用VirtualBox+Docker搭建可移植的Linux开发环境 https://www.jianshu.com/p/7ca57e4f66c5
VirtualBox扩展包安装教程|VirtualBox扩展增强包怎么安装 https://www.cnblogs.com/jpfss/p/9156738.html
VirtualBox虚拟机下vdi、vhd、vmdk虚拟硬盘格式的相互转换 https://blog.csdn.net/xunihua2012/article/details/8177765

上一篇:理解VirtualBox和VMWare的各种网络模式


下一篇:03.特性Attribute