结果展示
前言
苹果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
-
连接至虚拟机 这时可以看到熟悉的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./linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository 'deb [arch=arm64] https://download./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秒
结语
码字不易,看完点个赞呗
更新于2020-12-22
目前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./mac/m1preview/Docker-AppleSilicon-Preview7.dmg Docker 团队声明: https://www./blog/download-and-try-the-tech-preview-of-docker-desktop-for-m1/
|