Tech Explorer Logo

搜索内容

Docker运行macOS教程:Linux系统完整配置与部署指南

7 min read
Cover image for Docker运行macOS教程:Linux系统完整配置与部署指南

前提条件

在开始之前,请确保您满足以下要求:

  1. 安装 Docker

    • 确保您的系统已安装 Docker Engine。可以通过以下命令安装(以 Ubuntu 为例):
         sudo apt update
      sudo apt install docker.io
      sudo systemctl start docker
      sudo systemctl enable docker
  2. 依赖设备

    • 确保系统支持 /dev/kvm/dev/net/tun 设备。
    • 您可能需要添加权限,运行以下命令:
         sudo chmod 666 /dev/kvm
  3. 磁盘空间

    • 准备足够的磁盘空间(建议至少 64GB)用于存储 macOS 镜像和数据。

安装步骤

1. 拉取 Docker 镜像

运行以下命令拉取 dockurr/macos 镜像:

   docker pull dockurr/macos

2. 运行 Docker 容器

使用以下命令启动 macOS 容器:

   docker run -it --rm --name macos -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/macos:/storage" --stop-timeout 120 dockurr/macos

参数说明

  • -it:以交互模式运行容器。
  • --rm:容器退出后自动删除。
  • --name macos:容器名称为 macos
  • -p 8006:8006:映射主机端口 8006 到容器,用于 Web 访问。
  • --device=/dev/kvm--device=/dev/net/tun:启用 KVM 和网络设备。
  • --cap-add NET_ADMIN:授予容器网络管理权限。
  • -v "${PWD:-.}/macos:/storage":将当前目录下的 macos 文件夹挂载到容器中的 /storage,用于存储 macOS 数据。
  • --stop-timeout 120:设置容器停止的超时时间为 120 秒。

可选环境变量

  • VERSION:指定 macOS 版本,默认为 macOS 13(Ventura)。支持的版本包括:
    • 11(Big Sur)
    • 12(Monterey)
    • 13(Ventura)
    • 14(Sonoma)
    • 15(Sequoia,部分功能如 Apple 账户登录暂不支持)。 示例:
       docker run -it --rm --name macos -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/macos:/storage" -e VERSION="ventura" --stop-timeout 120 dockurr/macos

3. 通过 Web 浏览器访问

  1. 启动容器后,打开浏览器,访问 http://localhost:8006
  2. 您将进入 macOS 的安装界面。

4. 配置磁盘

  1. 在 macOS 安装界面中,选择 Disk Utility
  2. 找到最大的 Apple Inc. VirtIO Block Media 磁盘。
  3. 点击 Erase 按钮,将磁盘格式化为 APFS 文件系统,并为磁盘命名(任意名称)。
  4. 关闭 Disk Utility 窗口。

5. 安装 macOS

  1. 点击 Reinstall macOS 开始安装过程。
  2. 当提示选择安装目标时,选择您刚刚格式化的磁盘。
  3. 等待文件复制完成(可能需要一些时间,具体取决于网络和硬件性能)。
  4. 安装完成后,设置您的地区、语言和账户信息。

6. 完成设置

安装完成后,您将进入 macOS 桌面环境。您可以通过浏览器继续访问 macOS,或者通过 VNC(端口 5900)连接到容器。

VNC 连接(可选)

  • 使用 VNC 客户端(如 VNC Viewer)连接到 localhost:5900
  • 确保容器启动时映射了 5900 端口(TCP 和 UDP):
       -p 5900:5900/tcp -p 5900:5900/udp

7. 享受 macOS

安装完成后,您可以在 Docker 容器中运行 macOS,体验几乎原生的 macOS 系统。别忘了给 dockur/macos 仓库点个星以支持开发者!


使用 Docker Compose(可选)

如果您更喜欢使用 Docker Compose,可以创建一个 docker-compose.yml 文件,内容如下:

   services:
  macos:
    image: dockurr/macos
    container_name: macos
    environment:
      - VERSION=13
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 5900:5900/tcp
      - 5900:5900/udp
    volumes:
      - ./macos:/storage
    restart: always
    stop_grace_period: 2m

保存后,运行以下命令启动容器:

   docker-compose up -d

注意事项

  1. 法律合规性

    • 该项目仅包含开源代码,不分发任何受版权保护的材料,也不绕过版权保护措施。
    • 根据 Apple 的 EULA,macOS 只能在 Apple 硬件上运行。在非 Apple 硬件上运行可能违反条款,请确保合规使用。
  2. macOS 版本支持

    • 默认安装 macOS 13(Ventura)。
    • macOS 15(Sequoia)支持尚不完善,可能无法登录 Apple 账户。
  3. 性能优化

    • 如果遇到 KVM 相关错误,尝试在 docker-compose.yml 中添加 privileged: true 或在 docker run 命令前添加 sudo
    • 确保主机有足够的 CPU 和内存资源以支持虚拟化。
  4. 存储管理

    • 数据默认存储在 ./macos 目录中。您可以通过修改 -v 参数更改存储位置。
    • 如果需要更多磁盘空间,可以在 docker-compose.yml 中添加 DISK_SIZE 环境变量(例如 DISK_SIZE=128G)。
  5. 网络配置

    • 容器支持通过端口 8006(Web 访问)和 5900(VNC)进行连接。
    • 确保防火墙未阻止这些端口。
  6. 致谢

    • 该项目感谢 seitenca 的贡献,以及 OpenCoreKVM-OpenCore 项目提供的支持。

故障排除

  1. KVM 错误

    • 如果容器启动时提示 KVM 相关错误,检查 /dev/kvm 设备是否存在并具有正确权限:
         ls -l /dev/kvm
      sudo chmod 666 /dev/kvm
    • 确保未使用 Docker Desktop,且您的 CPU 支持虚拟化(VT-x/AMD-V)。
  2. 端口冲突

    • 如果端口 8006 或 5900 被占用,修改 docker rundocker-compose.yml 中的端口映射,例如 -p 8080:8006
  3. 安装失败

    • 确保网络连接稳定,macOS 安装需要下载较大的文件。
    • 检查磁盘空间是否充足。
  4. 性能问题

    • 增加容器分配的 CPU 和内存资源(通过 Docker 设置或 docker-compose.yml 中的 resources 配置)。

其他资源

  • GitHub 仓库https://github.com/dockur/macos
  • Kubernetes 支持:您可以通过以下命令在 Kubernetes 中部署 macOS:
       kubectl apply -f https://raw.githubusercontent.com/dockur/macos/refs/heads/master/kubernetes.yml
  • 相关项目
Share

更多文章