菜单

Naked 镜像

相关源文件

Docker-OSX 的裸镜像变体提供了一个容器化环境,要求用户自行提供 macOS 磁盘镜像。与其他包含预装 macOS 或带有自动安装过程的变体不同,裸镜像容器专门为“自带磁盘”(BYOD)方法设计。这最大限度地提高了灵活性和定制选项,同时最大限度地减小了基础容器的大小。

目的与范围

本文档涵盖:

  • 裸镜像变体是什么?它与其他 Docker-OSX 选项有何不同?
  • 何时以及为何使用裸镜像变体
  • 如何准备和使用自己的 macOS 磁盘镜像
  • 裸镜像容器的特定配置选项
  • 常见用例和实际示例

有关预装镜像的信息,请参阅 Auto Image。有关启用 VNC 的变体,请参阅 VNC Images

什么是裸镜像变体?

裸镜像变体(sickcodes/docker-osx:naked)是 Docker-OSX 的精简版本,提供虚拟化基础设施,但不包含 macOS 磁盘镜像。它期望用户在创建容器时挂载自己的磁盘镜像。

主要特点

  • 需要用户提供的磁盘镜像
  • 与预构建变体相比,容器尺寸更小
  • 最大程度地灵活使用任何 macOS 版本或自定义镜像
  • 支持无头和 GUI 操作
  • 适用于任何有效的 macOS 磁盘镜像(包括从其他容器中提取的镜像)

架构概述

裸镜像在 Docker-OSX 生态系统中的位置

来源:README.md209-230 Dockerfile.naked15-17

裸镜像运行时架构

来源:Dockerfile.naked24-30 README.md1649-1672

获取 macOS 磁盘镜像

在使用裸镜像变体之前,您需要一个有效的 macOS 磁盘镜像。有几种方法可以获取一个:

1. 从现有的 Docker-OSX 容器中提取

2. 使用另一个 Docker-OSX 变体创建新的磁盘镜像

3. 下载预制磁盘镜像

来源:README.md209-231 README.md1638-1650

使用裸镜像变体

基本用法

使用您自己的磁盘镜像运行裸镜像容器的最小命令

支持 GUI

以图形显示运行

来源:README.md1649-1672 Dockerfile.naked24-30

配置选项

裸镜像变体支持通过环境变量进行大量配置

环境变量默认描述
NOPICKERtrue当设置为 true 时跳过启动菜单。设置为 false 以显示启动菜单
GENERATE_UNIQUEfalse在运行时生成随机序列号
GENERATE_SPECIFICfalse使用其他变量中提供的特定序列号
CPUPenryn要模拟的 CPU 类型
内存3RAM(GB)(也可以使用 maxhalf
NETWORKINGvmxnet3网络适配器类型
HEADLESSfalse是否以无头模式运行
WIDTH / HEIGHT1920/1080屏幕分辨率(与 GENERATE_UNIQUEGENERATE_SPECIFIC 一起使用)
EXTRA附加的 QEMU 参数

来源:Dockerfile.naked119-173 README.md1357-1424

序列号生成

为了兼容 iCloud、iMessage 和 App Store,您可能需要生成唯一的硬件标识符

或者指定您自己的序列号

来源:README.md1281-1353 Dockerfile.naked193-216

常见用例

1. 开发和测试

裸镜像变体非常适合需要具有不同配置或版本的多个 macOS 环境的开发人员

2. CI/CD 管道

适用于 CI/CD 管道中的无头构建环境

3. 使用自定义序列号用于 iCloud/iMessage

来源:README.md1428-1488 README.md1737-1751

与 macOS 客户机共享文件

使用 9P 文件系统

使用 SSH/SSHFS

来源:README.md999-1035 README.md262-271

技术细节

容器启动流程

来源:Dockerfile.naked177-217

启动进程选项

裸镜像变体提供两种启动模式,由 NOPICKER 环境变量控制

  1. 禁用启动菜单NOPICKER=true,默认):跳过启动选择菜单,直接启动到 macOS
  2. 启用启动菜单NOPICKER=false):显示 OpenCore 启动菜单

来源:Dockerfile.naked188-216

故障排除

常见问题

  1. 错误:未找到镜像

    • 确保您的磁盘镜像路径正确
    • 验证文件权限允许 Docker 读取镜像
  2. KVM 不可用

    • 检查 KVM 在您的主机上是否已正确配置
    • 确保容器可以访问 /dev/kvm
  3. 显示不工作

    • 检查 X11 套接字权限
    • 验证 DISPLAY 环境变量设置是否正确

验证镜像完整性

在使用裸镜像变体的磁盘镜像之前,您可以验证其完整性

如果存在错误,您可以尝试修复它们

来源:README.md1140-1141

性能优化

为了提高裸镜像容器的性能

  1. 分配更多 CPU
-e EXTRA='-smp 4,sockets=2,cores=2'
  1. 增加 RAM 分配
-e RAM=8
  1. 使用更快的网络
-e NETWORKING=vmxnet3
  1. 使用 osx-optimizer 优化 macOS 系统本身

来源:README.md743-747 README.md368-376