本文档介绍了在不同环境中部署 Docker-OSX 的各种方法。它涵盖了 Docker CLI、Docker Compose 和 Kubernetes 编排配置,以帮助您为特定的用例选择最合适的部署方法。
有关设置后自定义部署实例的信息,请参阅配置与自定义 #4。
图示:Docker-OSX 部署选项
部署 Docker-OSX 最直接的方法是使用 Docker CLI 结合 docker run 命令。此方法非常适合个人开发机器和测试环境。
基本的部署模式使用 docker run 命令,并包含必要的设备挂载和环境变量。
来源:README.md60-71 README.md106-118
可以使用各种环境变量和卷挂载来定制 Docker CLI 部署。
| 参数 | 描述 | 示例 |
|---|---|---|
--device /dev/kvm | KVM 访问用于硬件加速 | 必填 |
-p 50922:10022 | SSH 端口转发 | -p 2222:10022 |
-v /tmp/.X11-unix:/tmp/.X11-unix | X11 显示转发 | GUI 所需 |
-e "DISPLAY=${DISPLAY:-:0.0}" | X11 显示变量 | GUI 所需 |
-e RAM=4 | RAM 分配(GB) | -e RAM=8 |
-e SMP=4 | CPU 核心分配 | -e SMP=6 |
-e GENERATE_UNIQUE=true | 生成唯一的机器值 | -e GENERATE_UNIQUE=true |
-e SHORTNAME=ventura | macOS 版本选择 | -e SHORTNAME=monterey |
-e EXTRA="..." | 其他 QEMU 参数 | 请参阅高级选项 |
来源:README.md1194-1211 README.md740-748
图示:Docker CLI 参数和系统配置流程
来源:README.md429-442 README.md1190-1212
使用您自己的磁盘镜像
来源:README.md220-231 README.md1647-1662
Docker Compose 允许您使用 YAML 文件定义多容器 Docker 应用程序。它非常适合开发环境,并通过将配置存储在版本化文件中来简化部署。
使用 Docker Compose 的好处包括:
Docker-OSX 使用 Helm Chart 支持 Kubernetes 部署。此方法非常适合 CI/CD 管道、多用户环境和需要可扩展性的生产部署。
图示:Kubernetes 部署架构
来源:helm/README.md1-13 README.md515-522
Docker-OSX Helm Chart 提供以下功能:
| 功能 | 描述 |
|---|---|
| CPU/内存配置 | 设置资源限制和请求 |
| VNC 密码 | 安全的 VNC 访问 |
| 持久化 | macOS 磁盘的持久化存储 |
| SMBIOS 配置 | 自定义序列号和标识符 |
| GPU 直通 | 硬件加速 |
| 音频 | 切换音频支持 |
| 端口转发 | 附加服务端口 |
| 资源限制 | Kubernetes 资源约束 |
| macOS 版本选择 | 选择特定的 macOS 版本 |
| 分区大小 | 配置磁盘大小 |
为 QEMU 和 GPU IOMMU 安装宿主机要求
构建 sickcodes/docker-osx-vnc Docker 镜像
配置 values.yaml
部署 Helm Chart
使用 VNC 查看器连接到端口 8888 上的指定 IP/主机名
来源:helm/README.md35-83 README.md518-523
| 功能 | Docker CLI | Docker Compose | Kubernetes |
|---|---|---|---|
| 设置简易度 | 高 | 中等 | 低 |
| 配置管理 | 手动/CLI | YAML 文件 | Helm 值 |
| 可扩展性 | 低 | 中等 | 高 |
| 资源管理 | 手动 | 基础 | 高级 |
| CI/CD集成 | 基础 | 良好 | 优秀 |
| 持久化 | 手动 | 内置 | 内置 |
| 多实例 | 手动 | 容易 | 原生 |
| 生产就绪性 | 低 | 中等 | 高 |
来源:README.md512-521 helm/README.md1-13
Docker-OSX 可以集成到 CI/CD 管道中,用于 iOS 和 macOS 应用程序的自动化测试。这需要无头操作和 SSH 访问。
来源:README.md1124-1149 README.md1729-1750
对于没有显示器的服务器环境,Docker-OSX 可以使用 VNC 或不带任何显示器的方式进行无头运行。
对于完全无头且没有任何显示服务器的部署,您可以使用 Telnet 进行控制台访问。
来源:README.md1151-1172 README.md1754-1779
| 方法 | 端口 | 安全 | 用例 |
|---|---|---|---|
| SSH | 50922 | 高 | 命令行访问 |
| VNC | 5999 | 中等 | GUI 访问 |
| SPICE | 3001 | 中等 | 远程查看器访问 |
| Telnet | 45454 | 低 | QEMU 控制台访问 |
图示:特定用例的部署选项
来源:README.md512-521 helm/README.md1-13
| 用例 | 推荐部署 | 关键配置 |
|---|---|---|
| 本地开发 | Docker CLI | X11 转发,USB 直通 |
| iOS/macOS 应用测试 | Docker CLI/Compose | 自定义镜像,持久化存储 |
| iMessage/iCloud 研究 | 带有专门参数的 Docker CLI | 序列号生成 |
| CI/CD 流水线 | Kubernetes | 无头操作,VNC 访问 |
| 安全研究 | Kubernetes | 自定义镜像,持久化存储 |
| 多用户环境 | Kubernetes | 资源限制,多实例 |
来源:README.md484-495 README.md560-583
Docker-OSX 提供了灵活的部署选项以适应各种用例,从个人开发环境到复杂的 CI/CD 管道。Docker CLI、Docker Compose 和 Kubernetes 部署之间的选择取决于可扩展性要求、配置管理需求和正在处理的特定用例等因素。对于简单的设置,Docker CLI 可提供最快的工作环境,而 Kubernetes 为生产部署提供了最稳健的解决方案。