简介
本文的初衷是手动搭建一个跨平台,可移植,轻量型的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文件.
4.6 其他设置
系统--处理器--启用 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
# 重启 ssh 服务
rc-service sshd restart
7. Virtual Box 安装增强功能
7.1 挂载光盘安装增强功能
挂载宿主机 Virtual Box 安装目录下的 VBoxGuestAdditions.iso
光盘文件安装。
Virtual Box的Alpine系统挂载ISO光盘文件 https://blog.csdn.net/WHQ78164/article/details/113851657
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
# or 设置权限
echo "dnmp /root/dnmp vboxsf defaults,uid=0,gid=0,dmode=700,fmode=700 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
10.1 安装并启动docker:
apk add docker
addgroup <username> docker
service docker start
# 开机启动
ln -s /etc/init.d/docker /etc/runlevels/default/docker
# or
rc-update add docker boot
10.2 安装 docker-compose
apk add docker-compose
10.3 国内镜像加速:
vi /etc/docker/daemon.json:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
10.4 其他
若 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. 虚拟机文件挂载权限问题
id # 查看uid和gid
echo "dnmp /root/dnmp vboxsf defaults,gid=103,dmode=700,fmode=700 0 0" >> /etc/fstab
共享文件夹不是虚拟机本地目录,权限有限。所属用户默认为root,组为vboxsf,使用 chmod chown 等命令无法改变。
https://www.jianshu.com/p/bc325b7a8718
http://www.gangtieguo.cn/2019/03/12/mac%E4%B8%8Evirtualbox%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E6%8C%82%E8%BD%BD%E5%88%B0docker%E5%AE%B9%E5%99%A8%E4%B8%AD%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E6%9D%83%E9%99%90%E8%A7%A3%E5%86%B3/
12. 虚拟硬盘文件格式的转换
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