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

结果展示

结果展示

前言

苹果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/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
    
  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/

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
Linux虚拟机是一种在物理计算机上模拟运行Linux操作系统的软件。它可以让用户在自己的计算机上创建一个独立的虚拟环境,以便进行开发、测试和学习等活动。 Docker是一种开源的容器化平台,它可以帮助开发者将应用程序及其依赖项打包成一个独立的容器,以便在不同的环境中进行部署和运行。Docker的优势在于它提供了轻量级、可移植和可扩展的容器化解决方案。 要在Linux虚拟机上下载Docker,可以按照以下步骤进行操作: 1. 首先,选择一个适合你的Linux发行版的虚拟机软件,比如VirtualBox或VMware Workstation等。这些软件都提供了免费版本供个人使用。 2. 下载并安装虚拟机软件。你可以从官方网站上找到相应的安装包,并按照提示进行安装。 3. 在虚拟机软件中创建一个新的虚拟机实例,并选择一个合适的Linux发行版作为操作系统。你可以选择像Ubuntu、CentOS或Debian等常见的Linux发行版。 4. 启动虚拟机,并按照操作系统的安装向导进行Linux系统的安装。 5. 安装完成后,打开Linux虚拟机的终端或命令行界面。 6. 在终端中,输入以下命令来下载和安装Docker: 对于Ubuntu系统: ``` sudo apt-get update sudo apt-get install docker.io ``` 对于CentOS系统: ``` sudo yum update sudo yum install docker ``` 7. 安装完成后,启动Docker服务: ``` sudo service docker start ``` 8. 确认Docker是否成功安装,可以运行以下命令来查看Docker版本信息: ``` docker version ``` 至此,你已经成功在Linux虚拟机上下载并安装了Docker
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值