Naked-Auto 镜像是一个专门的 Docker-OSX 变体,它将 Naked 镜像的自定义能力与自动 SSH 登录功能相结合。它允许用户提供自己的 macOS 磁盘镜像,同时为无头操作和 CI/CD 环境提供自动化功能。有关没有自动化的基本 Naked 镜像的信息,请参阅 Naked Image。
Naked-Auto 镜像作为完全可自定义但手动配置的 Docker-OSX 设置与自动化工作流之间的桥梁。此镜像变体专为以下目的而设计:
来源: README.md477-481 Dockerfile.naked-auto15-16
来源: Dockerfile.naked-auto237-258
来源: Dockerfile.naked-auto194-258
naked-auto 镜像通过环境变量提供广泛的自定义功能
| 可变 | 描述 | 默认 | 示例 |
|---|---|---|---|
USERNAME | macOS 用户名,用于 SSH 登录 | user | -e USERNAME=admin |
PASSWORD | macOS 密码,用于 SSH 登录 | alpine | -e PASSWORD=mysecretpass |
IMAGE_PATH | 自定义 macOS 磁盘镜像的路径 | /image | -v "$PWD/mac_hdd.img:/image" |
OSX_COMMANDS | 通过 SSH 在 macOS 中执行的命令 | (无) | -e "OSX_COMMANDS=brew install python" |
| 可变 | 描述 | 默认 | 示例 |
|---|---|---|---|
内存 | RAM 分配 (GB) | 3 | -e RAM=8 |
CPU | CPU 类型仿真 | Penryn | -e CPU=Haswell |
KVM | KVM 加速参数 | accel=kvm:tcg | (很少更改) |
NETWORKING | 网络适配器类型 | vmxnet3 | -e NETWORKING=e1000-82545em |
| 可变 | 描述 | 默认 | 示例 |
|---|---|---|---|
DISPLAY | 使用的 X11 显示 | :99 | -e "DISPLAY=${DISPLAY:-:0.0}" |
HEADLESS | 无显示运行 | false | -e HEADLESS=true |
WIDTH | 屏幕宽度 (使用 GENERATE 选项时) | 1920 | -e WIDTH=1600 |
HEIGHT | 屏幕高度 (使用 GENERATE 选项时) | 1080 | -e HEIGHT=900 |
| 可变 | 描述 | 默认 | 示例 |
|---|---|---|---|
GENERATE_UNIQUE | 生成随机序列号 | false | -e GENERATE_UNIQUE=true |
GENERATE_SPECIFIC | 使用自定义序列号 | false | -e GENERATE_SPECIFIC=true |
DEVICE_MODEL | Apple 设备型号 | (变化) | -e DEVICE_MODEL="iMacPro1,1" |
SERIAL | 设备序列号 | (随机) | -e SERIAL="C02TW0WAHX87" |
BOARD_SERIAL | 主板序列号 | (随机) | -e BOARD_SERIAL="C027251024NJG36UE" |
UUID | 系统 UUID | (随机) | -e UUID="5CCB366D-9118-4C61-A00A-E5BAF3BED451" |
MAC_ADDRESS | MAC 地址 | (随机) | -e MAC_ADDRESS="A8:5C:2C:9A:46:2F" |
来源: Dockerfile.naked-auto128-190
来源: README.md244-261 README.md1709-1721
来源: Dockerfile.naked-auto194-258
磁盘镜像准备:确保您的 macOS 磁盘镜像已正确准备,并已
资源分配:根据您的工作负载分配适当的资源
-e RAM=4)-e EXTRA='-smp 4,cores=2')网络:为了在资源密集型应用程序中获得更好的网络性能
vmxnet3 网卡 (默认)| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 容器立即退出 | 无效的磁盘镜像路径 | 检查您的磁盘镜像是否存在并已正确挂载 |
| SSH 连接失败 | macOS 中未启用 SSH | 确保在“系统偏好设置”→“共享”中启用了 SSH |
| 性能缓慢 | 资源不足 | 增加 RAM 和 CPU 分配 |
| iCloud/iMessage 问题 | 无效的序列号 | 使用 GENERATE_UNIQUE=true 或提供有效的序列号 |
| 屏幕分辨率问题 | 缺少序列号生成 | 屏幕尺寸自定义需要使用 GENERATE_UNIQUE 或 GENERATE_SPECIFIC |
来源: README.md686-786 README.md831-834
使用 naked-auto 镜像时,请考虑以下安全隐患
密码存储:通过环境变量提供的密码在 Docker 历史记录和进程列表中可见。对于生产环境,请考虑
网络暴露:SSH 端口默认暴露给主机。通过以下方式限制暴露:
-p 127.0.0.1:50922:10022序列号生成:使用 GENERATE_UNIQUE=true 时,请了解
来源: README.md559-564
naked-auto 镜像因其自动化功能而特别适合 CI/CD 管道。关键集成点包括:
镜像准备:创建预先配置的 macOS 镜像,其中包含所有必需的工具和依赖项
容器化测试:通过 OSX_COMMANDS 变量,无需用户干预即可运行自动化测试
构建产物收集:使用卷挂载在容器和主机之间共享构建产物
无头操作:在 CI 环境中使用 -e HEADLESS=true 以实现高效的资源利用
来源: README.md704-774 README.md1129-1149
naked-auto 镜像建立在几项关键技术之上
有关底层组件的更多信息,请参阅 配置与自定义 和 高级主题。
来源: README.md427-491