苹果M1芯片上借助Linux虚拟机搭建Docker环境
结果展示

前言
苹果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/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
