Docker-OSX 是一个在 Docker 容器内使用 OSX-KVM 使 macOS 接近原生运行的项目。 使用它,您将能够在 QEMU 虚拟机(通过 Docker)中安装 macOS,并运行 macOS Catalina 或 Big Sur 桌面,或引导至 OSX shell。
Docker-OSX 项目提供了四个 Docker 镜像:
sickcodes/docker-osx:latest
– 使用 macOS Catalina 的原始基础恢复映像sickcodes/docker-osx:big-sur
– 使用 macOS Big Sur 的原始基础恢复映像sickcodes/docker-osx:naked
– 提供您自己的 .img 文件 (使用-v "${PWD}/disk.img:/image"
)sickcodes/docker-osx:auto
– 大 (~19.4GB) docker 镜像,可引导至 OSX shell (已启用 SSH,使用 user 作为用户名,alpine 作为密码;您需要大约 50GB 的磁盘空间来运行此映像)
功能包括:
- X11转发
- 全自动模式:直接启动到 OSX shell,甚至将命令作为运行时参数运行
- Kubernetes 掌舵图。 见 ./helm
- SSH 开启
localhost:50922
- VNC 版本在
localhost:8888
(由于使用 VNC 存在安全风险,VNC 版本在单独的目录中) - 使用 docker commit 创建一个完全相同容器的 ARMY
- Xfvb 无头模式
该项目还包括各种调整说明,例如转发额外端口、更改屏幕分辨率、启用网络转发、允许 USB 直通、使用大型预制图像和使用您自己的图像的快速启动说明等(所有这些都可在项目页面)。
值得注意的是,Apple 从一开始就不允许在非 Apple 硬件上安装 macOS,因此要合法使用它,您的操作系统必须安装在 Apple 硬件上。 另外,要使用它,您的计算机 CPU 需要支持硬件虚拟化; 从这里查看 KVM 清单以了解您的 CPU 是否支持它(您也可以运行 sudo 如果一切正常,kvm-ok 将返回“可以使用 KVM 加速”)。
在我的 Ubuntu 20.10 桌面上,使用 sickcodes/docker-osx:big-sur
图像花了大约 55 分钟。 Docker 镜像占用大约 3.2 GB 的磁盘空间,而容器空间使用量约为 35 GB。
您可能还想看看 Sosumi,一个可以在 Linux 上的虚拟机中轻松下载和安装 macOS Catalina 的 snap 包,它也使用 QEMU + KVM,并且基于 macOS-Simple-KVM。 值得注意的是,Sosumi 自首次发布以来一直没有更新。
您将在下面找到有关使用 Docker (Docker-OSX) 运行 macOS(Catalina 或 Big Sur)基本恢复映像、安装和运行 macOS 的说明(可以选择设置自定义分辨率;未指定选项时使用 1920×1080) . 还有移除容器的说明。
LazyDocker:Docker 和 Docker Compose 终端 UI
如何使用 Docker-OSX 在 QEMU + KVM 中安装 macOS (OSX)
1. 先决条件。
在继续之前,请确保您的计算机支持硬件虚拟化并在 BIOS 中启用它(您可以使用 sudo kvm-ok
如果一切正常,它将返回“可以使用 KVM 加速”)。 完成此操作后,您可以继续执行下面的其余说明。
首先确保您已安装 Docker(另请参阅官方 Docker 安装文档)。
如果您还没有在主机系统上安装 QEMU。 您可能还需要使用将您的用户添加到 kvm 组 sudo usermod -aG kvm $USER
使其正常工作。
至于所需的磁盘空间,请阅读本文后面的评论以进行粗略估计。 为了 sickcodes/docker-osx:auto
您需要大约 50 GB 的磁盘空间才能使用它。
2. 启动 Docker-OSX。
使用 Docker-OSX 运行 macOS Big Sur 或 Catalina (对于其他选项,请参阅 Docker-OSX 项目页面 – 例如,您可以无头运行它,使用您自己的映像,运行病码/docker-osx:latest 允许 SSH 进入 macOS 等;您可能还想查看这些自定义可用于设置 CPU 内核数、可用 RAM 等的 QEMU 参数):
- 运行 macOS Big Sur (改变
WIDTH
和HEIGHT
要用于 macOS Big Sur 虚拟机的屏幕分辨率的值; 我在下面使用 1600×900)使用基本恢复映像:
docker run -it
--device /dev/kvm
-p 50922:10022
-e DEVICE_MODEL="iMacPro1,1"
-e WIDTH=1600
-e HEIGHT=900
-v /tmp/.X11-unix:/tmp/.X11-unix
-e "DISPLAY=${DISPLAY:-:0.0}"
-e GENERATE_UNIQUE=true
-e MASTER_PLIST_URL=https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist
sickcodes/docker-osx:big-sur
- 运行 macOS Catalina (改变
WIDTH
和HEIGHT
要用于 macOS Big Sur 虚拟机的屏幕分辨率的值; 我在下面使用 1600×900)使用基本恢复映像:
docker run -it
--device /dev/kvm
-p 50922:10022
-e GENERATE_UNIQUE=true
-e DEVICE_MODEL="iMacPro1,1"
-e WIDTH=1600
-e HEIGHT=900
-v /tmp/.X11-unix:/tmp/.X11-unix
-e "DISPLAY=${DISPLAY:-:0.0}"
sickcodes/docker-osx:latest
这可能需要几分钟的时间。
上述 Docker 运行命令使用了使用 Docker 在 QEMU 中启动 macOS 的基本选项(基本恢复映像,用于安装 macOS),由 Docker-OSX 项目页面提供,并添加了屏幕分辨率选项。 如果您删除 GENERATE_UNIQUE
, DEVICE_MODEL
, WIDTH
和 HEIGHT
选项,虚拟机将使用默认 (1920×1080) 屏幕分辨率。
3.使用磁盘工具格式化最大的QEMU HARDDISK。
几分钟后,macOS 虚拟机将启动。 启动到 macOS 基本系统并选择 Disk Utility
从菜单:
接下来,在“磁盘工具”工具中,从 2 QEMU HARDDISK Media 中检查左侧最大的硬盘,然后单击最大的(在我用于测试的版本中为 214,75 GB)。
提示:要让 QEMU 虚拟机松开鼠标,请按 Ctrl + Alt + g
(在某些情况下,这只是 Ctrl + g
)。
现在点击 Erase
磁盘工具工具栏上的按钮来格式化这个硬盘:
为磁盘设置一个名称,例如“macOS”,并将其他选项保留为默认值(它们是 Format: APFS for macOS Big Sur 和 Mac OS Extended (Journaled) for macOS Catalina,架构是 GUID 分区映射) )。
擦除最大的 QEMU 硬盘后, close 磁盘工具对话框。
4.在虚拟机中安装macOS。
关闭磁盘工具后,您将再次进入可以启动磁盘工具等的菜单。不过这一次,您需要选择选项 Reinstall macOS Big Sur
(或者,如果您使用的是 sickcodes/docker-osx:latest
具有 Catalina 的图像,此选项仅称为 Reinstall macOS
):
点击 Continue
, 然后 Agree
,您将进入一个屏幕,您可以从中选择您在第 3 步中格式化的硬盘(它使用您在擦除时输入的名称显示,例如 macOS
在我们的例子中)。 选择硬盘并单击 Continue
:
macOS Big Sur / Catalina(取决于您选择的图像)安装现在将开始:
一段时间后,mac OSX 虚拟机将重新启动。 选择 macOS Installer
启动项:
安装完成后,此引导条目将变为“macOS”,并允许您在虚拟机内引导到新的 macOS 安装:
现在您需要选择您所在的国家或地区,可选择使用您的 Apple ID 登录,同意条款和条件等,以及创建您的计算机帐户(用户名和密码)。
请注意,在安装 macOS 并首次启动后,我不得不选择两次 macOS 条目(第一次选择它后重新启动)。 还, 在 macOS 安装过程中存在鼠标滞后(和一般滞后),但是一旦您运行已安装的 macOS 虚拟机,这种情况就不再发生(或者不太明显;这取决于您的计算机硬件).
5. 启动新安装的 macOS 虚拟机。
当您要启动新安装的 macOS 虚拟机时,请运行 docker ps -a
查看容器 ID 和/或名称:
docker ps -a
然后启动容器:
docker start Container_ID_or_Name
代替 Container_ID_or_Name
使用上一个命令获得的容器 ID 或名称。
Portainer:用于远程或本地使用的基于 Web 的 Docker GUI
如何删除 Docker-OSX
所以你已经决定要删除 Docker-OSX。 首先运行以下命令以获取 Docker 容器名称和 ID 的列表:
docker container ls -a
使用此命令,确定要删除的容器。 现在使用以下命令停止并移除容器:
docker container stop ID_or_Image
docker container rm ID_or_Image
代替 ID_or_Image
使用上一个命令获得的容器 ID 或图像。
要删除 Docker-OSX 镜像,首先使用以下命令列出现有的 Docker 镜像:
docker image ls
接下来,使用以下命令删除 Docker-OSX 映像:
docker image rm Image_ID
代替 Image_ID
使用您使用上一个命令获得的图像 ID。
通过 cerebrux.net (GR)