苹果M1芯片的Mac电脑目前使用Docker desktop app,对于我目前开发时必须的本地FastDFS环境影响很大,研究到一套在M1芯片上搭建ARM base Linux虚拟机的路子,这样就不会被macOS限制了
下载ARM base Linux镜像:focal-desktop-arm64.iso
创建临时文件夹,克隆vftool虚拟机启动工具并编译
mkdir ~/Documents/vm
cd ~/Documents/vm
git clone https://github.com/evansm7/vftool
cd vftool
make
创建挂载盘:
sudo mkdir /Volumes/Ubuntu
查询镜像中可挂载的盘符:
sudo hdiutil attach -nomount ~/Downloads/focal-desktop-arm64.iso
如果你使用的是我提供的镜像,这里会输出下面三行
/dev/disk6 FDisk_partition_scheme
/dev/disk6s1 0xCD
/dev/disk6s2 0xEF
复制第一行的/dev/disk6,下一步中会用到
挂载镜像
sudo mount -t cd9660 /dev/disk6 /Volumes/Ubuntu
复制挂载盘中的vmlinuz
和initrd
到临时目录下
cd /Volumes/Ubuntu/casper
cp vmlinuz ~/Documents/vm/vmlinuz
cp initrd ~/Documents/vm/initrd
给vmlinuz
改名并解压
cd ~/Documents/vm/
mv vmlinuz vmlinuz.gz
gunzip vmlinuz.gz
启动虚拟机
cd vftool/build
./vftool -k ~/Documents/vm/vmlinuz -i ~/Documents/vm/initrd -d ~/Downloads/CentOS-7-aarch64-Minimal-2009.iso -m 4096 -a 'console=hvc0'
这时候你应该可以看到如下输出,这代表着虚拟机已经启动了
2020-12-19 17:57:58.467 vftool[43730:1411768] vftool (v0.3 10/12/2020) starting
2020-12-19 17:57:58.468 vftool[43730:1411768] kernel at vmlinuz, initrd at initrd, cmdline 'console=hvc0', 1 cpus, 4096MB memory
2020-12-19 17:57:58.468 vftool[43730:1411768] fd 3 connected to /dev/ttys001
2020-12-19 17:57:58.468 vftool[43730:1411768] Waiting for connection to: /dev/ttys001
连接至虚拟机
screen /dev/ttys001
这时可以看到熟悉的Linux启动
启动后输入用户名ubuntu,密码为空
安装Docker并启动
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository 'deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable'
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
这里的 [arch=arm64] 是添加arm64版本的docker库
为了使用docker时不用加sudo
sudo usermod -aG docker ${USER}
su - ${USER}
在15寸MacBook Pro 2019与M1芯片的MacBook Air上运行所有@SwiftPackages测试,Air以24秒的成绩秒杀Pro的45秒
码字不易,看完点个赞呗
目前Docker已经针对M1芯片发布了预览版,推文内容如下:
Docker 团队形容适配工作有三大挑战
- 虚拟化框架从 HyperKit 转向苹果的 Virtualization Framework(Migrate from HyperKit to the Virtualization Framework.)
- 重新编译 Docker Desktop 的二进制文件(Recompile all the various binaries of Docker Desktop in native arm)
- 没有足够的 M1 机器进行集成测试(Have enough hardware to reliably run continuous deployment on M1 Macs.)
Docker 团队表示,他们在前两项挑战中取得突破,因此可以推出这次的 Tech previrw 版本。
Docker 团队同时在文中表示,Docker 一直以来都支持多平台镜像(multi-platform images),这次的版本也不例外,开发者可以在他们的 M1 芯片版本电脑上同时运行 x86 与 arm 架构的镜像。
下载地址:
https://desktop.docker.com/mac/m1preview/Docker-AppleSilicon-Preview7.dmg
Docker 团队声明:
https://www.docker.com/blog/download-and-try-the-tech-preview-of-docker-desktop-for-m1/
联系客服