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

结果展示

苹果M1芯片上借助Linux虚拟机搭建Docker环境_第1张图片

前言

苹果M1芯片的Mac电脑目前使用Docker desktop app,对于我目前开发时必须的本地FastDFS环境影响很大,研究到一套在M1芯片上搭建ARM base Linux虚拟机的路子,这样就不会被macOS限制了

准备工作

下载ARM base Linux镜像:focal-desktop-arm64.iso’

步骤

  1. 创建临时文件夹,克隆vftool虚拟机启动工具并编译

    mkdir ~/Documents/vm
    cd ~/Documents/vm
    git clone https://github.com/evansm7/vftool
    cd vftool
    make
    
  2. 创建挂载盘:

    sudo mkdir /Volumes/Ubuntu
    
  3. 查询镜像中可挂载的盘符:

    sudo hdiutil attach -nomount ~/Downloads/focal-desktop-arm64.iso
    

    如果你使用的是我提供的镜像,这里会输出下面三行

    /dev/disk6 FDisk_partition_scheme
    /dev/disk6s1 0xCD
    /dev/disk6s2 0xEF

    复制第一行的/dev/disk6,下一步中会用到

  4. 挂载镜像

    sudo mount -t cd9660 /dev/disk6 /Volumes/Ubuntu
    
  5. 复制挂载盘中的vmlinuzinitrd到临时目录下

    cd /Volumes/Ubuntu/casper
    cp vmlinuz ~/Documents/vm/vmlinuz
    cp initrd ~/Documents/vm/initrd
    
  6. vmlinuz改名并解压

    cd ~/Documents/vm/
    mv vmlinuz vmlinuz.gz
    gunzip vmlinuz.gz
    
  7. 启动虚拟机

    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
    
  8. 连接至虚拟机

    screen /dev/ttys001
    

    这时可以看到熟悉的Linux启动

  9. 启动后输入用户名ubuntu,密码为空

  10. 安装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库

  11. 为了使用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 团队形容适配工作有三大挑战

  1. 虚拟化框架从 HyperKit 转向苹果的 Virtualization Framework(Migrate from HyperKit to the Virtualization Framework.)
  2. 重新编译 Docker Desktop 的二进制文件(Recompile all the various binaries of Docker Desktop in native arm)
  3. 没有足够的 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/

你可能感兴趣的:(mac,docker,linux)