结果展示
前言
苹果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/focal-desktop-arm64.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秒
结语
码字不易,看完点个赞呗
更新于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.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/