Docker-OSX:在Docker容器中运行Mac OS X

系统介绍

Docker-OSX是一个开源项目,它允许开发者在Docker容器中运行Mac OS X系统。

技术解析

  • 核心技术:Docker-OSX的核心技术基于QEMU(一款开源的全虚拟化解决方案)和Docker的结合。QEMU允许在一个操作系统中模拟另一个操作系统,而Docker则提供了容器化的环境,使得应用可以在隔离的环境中运行。
  • 虚拟磁盘:该项目使用VBoxManage创建一个名为osx-vm的虚拟磁盘,并将其挂载到Docker容器中。随后,通过QEMU加载虚拟磁盘,并通过docker exec命令将shell会话连接到VM,实现对Mac OS的交互。

应用场景

  • 跨平台测试:对于开发面向Mac的应用的开发者来说,Docker-OSX项目可以让他们在非Mac设备上进行测试和调试,无需拥有物理的Mac硬件。
  • 持续集成/持续部署(CI/CD):在CI/CD管道中,可以使用Docker-OSX来构建和测试针对Mac的软件包。
  • 教育与学习:如果你想要了解Mac OS的工作机制,但没有条件购买实体设备,Docker-OSX是一个理想的实验平台。

特点

  • 轻量化:由于利用了Docker的轻量级特性,Docker-OSX相比于传统的虚拟机占用更少的资源,启动速度更快。
  • 易于使用:只需要安装了Docker的环境,就可以快速地运行和停止Mac OS实例,操作简单。
  • 可移植性:Docker容器的标准化意味着你可以轻松地在本地、远程服务器或云环境中迁移你的Mac OS环境。
  • 更新及时:Sickcodes团队定期更新镜像,确保用户可以使用最新的Mac OS版本。

如需了解更多信息,可以访问其官方网站或查阅相关的技术文档。

官方GitHub

https://github.com/sickcodes/Docker-OSX

社区

https://discord.gg/sickchat

安装教程

本文使用Docker安装部署,操作步骤包括安装Docker、创建docker-compose.yml、启动容器运行镜像。

环境要求

搭建环境要求服务器支持虚拟化。以Windows为例,在本地安装虚拟机软件VMware Workstation,并创建虚拟机Ubuntu,设置虚拟机的虚拟化技术

检查虚拟化支持

进入虚拟机Ubuntu,分别输入以下指令检查虚拟化是否启用:

sudo apt install cpu-checker
sudo kvm-ok

安装 Docker

sudo apt update
sudo apt install -y docker.io

创建 docker-compose.yml

在Home目录创建docker-compose.yml,编写以下配置并保存:

version: '3'
services:
  docker-osx:
    image: sickcodes/docker-osx:latest
    devices:
      - "/dev/kvm"
    ports:
      - "50922:10022"
    volumes:
      - "/tmp/.X11-unix:/tmp/.X11-unix"
    environment:
      - "DISPLAY=${DISPLAY:-:0.0}"

启动容器运行镜像

sudo docker-compose up -d

快速搭建

除了使用docker-compose部署之外,还可使用Docker指令搭建。

sudo docker run -it \
    --device /dev/kvm \
    -p 50922:10022 \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    sickcodes/docker-osx:latest

由于容器镜像较大,拉取时间会比较久。而且部署镜像会占用较大的空间,注意预留空间避免部署失败。部署完成后会自动调用虚拟机窗口运行MacOS系统。

初次进入MacOS系统

刚进入MacOS时无法直接进入系统,必须重新安装。选择最下面的磁盘管理工具,将第一个虚拟磁盘格式化成APFS格式(或者参照网上教程格式化成其它对应格式),然后关闭磁盘管理工具,选择重新安装系统,选择格式化的磁盘进行系统安装。

文件互通

根据官方文档,可以通过以下命令设置文件互通:

# on Linux/Windows
mkdir ~/mnt/osx
sshfs user@localhost:/ -p 50922 ~/mnt/osx
# wait a few seconds, and ~/mnt/osx will have full rootfs mounted over ssh, and in userspace
# automated: sshpass -p <password> sshfs user@localhost:/ -p 50922 ~/mnt/osx
END
本文作者:
文章标题: 在Docker中运行Mac OS X:使用Docker-OSX实现跨平台开发与测试
本文地址: https://www.haovps.top/archives/255.html
版权说明:若无注明,本文皆 高性能VPS推荐与IT技术博客 | Haovps.Top 原创,转载请保留文章出处。
cc
最后修改:2024 年 07 月 20 日
如果觉得我的文章对你有用,请随意赞赏