菜单

高级主题

相关源文件

目的与范围

本节介绍 Docker-OSX 的高级用法场景和配置,涵盖了除了基本安装和操作之外的内容。这些主题面向需要针对特定用例(如 CI/CD 管道、服务器部署或专用开发环境)来自定义其 Docker-OSX 环境的用户。

高级主题包括网络配置、硬件设备直通技术和无头操作方法。有关基本安装和使用说明,请参阅安装与基本使用。有关不同的 Docker-OSX 镜像变体的信息,请参阅镜像变体

网络与端口转发

网络架构

Docker-OSX 采用分层网络架构,以实现主机系统、Docker 容器和 macOS 虚拟机之间的通信。

网络架构图

来源: README.md61-71 README.md926-964

端口转发

Docker-OSX 支持将端口从主机系统转发到 macOS 虚拟机中运行的服务。默认情况下,SSH 从主机的 50922 端口转发到容器的 10022 端口。

附加端口转发

ADDITIONAL_PORTS 环境变量允许转发多个端口

这会将主机的 10023 端口转发到 macOS 虚拟机的 80 端口,便于访问 Web 服务。

多个端口转发可以串联使用

常见端口转发示例

主机端口虚拟机端口典型服务
5092210022SSH
1002380HTTP
10043443HTTPS
59005900VNC
30003000开发

来源: README.md926-964

网络适配器优化

Docker-OSX 提供选项来自定义虚拟网络适配器,以兼顾性能或兼容性

来源: README.md1119-1127

桥接网络配置

对于需要直接网络访问的安装,您可能需要在主机上启用 IPv4 转发

Fedora 用户可能需要额外的防火墙配置

来源: README.md971-996 README.md1100-1107

硬件直通

设备直通架构

硬件直通图

来源: README.md1580-1634 README.md1190-1212

USB 设备直通

基本 USB 直通

要将 USB 设备传递给 macOS,首先需要在主机系统上识别它

然后使用适当的 Docker 和 QEMU 参数

来源: README.md1580-1634

iPhone USB 直通

Docker-OSX 支持通过两种方法实现 iPhone 连接

  1. 直接直通 (VFIO) 适用于台式电脑
  2. 基于网络的直通 (USBFLUXD) 适用于所有系统,包括笔记本电脑

USBFLUXD 直通图

设置过程需要

  1. 在主机系统上

  2. 在 macOS 虚拟机中

来源: README.md274-366

音频直通

Docker-OSX 支持 PulseAudio 以实现声音输出

适用于 Windows WSLg 用户

来源: README.md887-923

磁盘和文件夹共享

挂载物理磁盘

要在 macOS 虚拟机中挂载物理磁盘或磁盘映像

来源: README.md1507-1540

文件夹共享方法

Docker-OSX 提供多种文件夹共享方法

  1. SSHFS(推荐)

  2. 9P 文件系统

  3. NFS 共享

来源: README.md999-1069 README.md264-271

无头操作

无头架构

无头操作图

来源: README.md1729-1777 README.md1752-1820

基本无头配置

要无头运行 Docker-OSX,请省略 X11 显示参数

用于自动登录和命令执行

来源: README.md1729-1741 README.md1686-1722

远程访问方法

VNC 访问

要启用 VNC 访问

在 QEMU 控制台(按 Enter 键访问)中,设置 VNC 密码

change vnc password myvncpassword

然后使用任何 VNC 客户端连接到 localhost:5999

来源: README.md1752-1777

SPICE 访问

SPICE 为 VNC 提供了远程访问的替代方案

使用 SPICE 客户端连接

来源: README.md1803-1820

通过 Telnet 访问 QEMU Monitor

通过 Telnet 访问 QEMU Monitor 以进行底层控制

连接到 QEMU Monitor

来源: README.md1151-1174

为无头环境优化

为提高无头环境中的性能

  1. 启用无启动菜单的自动启动

  2. 禁用不必要的 macOS 服务

  3. 使用OSX Optimizer 脚本可实现额外的性能改进。

来源: README.md368-376 README.md1886-1910

高级配置

序列号生成与 iServices

为了启用 iMessage、iCloud 和其他 Apple 服务,Docker-OSX 提供了生成和使用唯一硬件标识符的工具

序列号架构图

随机序列号生成

指定序列号生成

来源: README.md1214-1396

自定义显示分辨率

Docker-OSX 在与序列号生成一起使用时支持自定义显示分辨率

常见分辨率选项

宽度高度备注
800600基本兼容性
1280768类似笔记本
1600900高清分辨率
19201080全高清
25601600高 DPI

来源: README.md1397-1505

自定义 QEMU 参数

使用 EXTRA 环境变量将附加参数传递给 QEMU

常见的 QEMU 自定义包括

  • CPU 类型和功能
  • USB 设备直通
  • PCI 设备配置
  • GPU 直通选项
  • 显示和控制台设置

来源:README.md1190-1212

CI/CD 集成优化

针对 CI/CD 环境,优化 Docker-OSX 镜像的性能和大小

  1. 移除 macOS 中不必要的文件
  2. 启用 TRIM:sudo trimforce enable
  3. 将空闲空间清零:dd if=/dev/zero of=./empty && rm -f empty
  4. 导出并转换磁盘镜像
  5. 创建自定义 Docker 镜像

来源:README.md1130-1150

企业和云部署

Kubernetes 部署

Docker-OSX 提供用于 Kubernetes 部署的 Helm chart。有关详细说明,请参阅部署选项

Kubernetes 部署的关键特性

  • 可扩展的 macOS 虚拟机
  • 与 CI/CD 流水线的集成
  • macOS 安装的持久化存储
  • 负载均衡和服務發現

来源:README.md515-522

持久化存储管理

对于生产部署,请考虑

  1. 将 Docker 存储移至外部驱动器

  2. 为持久化的 macOS 磁盘使用卷挂载

来源:README.md377-410

嵌套虚拟化

Docker-OSX 需要硬件虚拟化支持。对于云部署

  1. 确保云实例支持嵌套虚拟化
  2. 配置主机以获得最佳 KVM 性能

来源:README.md1111-1118

故障排除高级配置

高级 Docker-OSX 配置的常见问题和解决方案

  1. 内存分配问题

  2. USB 设备检测问题

  3. 网络连接问题

  4. 无头模式故障

来源:README.md859-885 README.md697-748