Tools 7 min read
Docker运行macOS教程:Linux系统完整配置与部署指南
【2025最新】Docker容器运行macOS系统完整教程,基于dockur/macos项目。包含KVM虚拟化环境搭建、Docker部署步骤、Web界面访问、VNC连接配置。支持macOS 11-15版本,适用于Linux服务器。解决macOS虚拟化难题,提供详细故障排除方案。
本文发布于 441 天前,内容可能已过时,请注意甄别。
前提条件
在开始之前,请确保您满足以下要求:
-
安装 Docker:
- 确保您的系统已安装 Docker Engine。可以通过以下命令安装(以 Ubuntu 为例):
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
- 确保您的系统已安装 Docker Engine。可以通过以下命令安装(以 Ubuntu 为例):
-
依赖设备:
- 确保系统支持
/dev/kvm和/dev/net/tun设备。 - 您可能需要添加权限,运行以下命令:
sudo chmod 666 /dev/kvm
- 确保系统支持
-
磁盘空间:
- 准备足够的磁盘空间(建议至少 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 浏览器访问
- 启动容器后,打开浏览器,访问
http://localhost:8006。 - 您将进入 macOS 的安装界面。
4. 配置磁盘
- 在 macOS 安装界面中,选择 Disk Utility。
- 找到最大的 Apple Inc. VirtIO Block Media 磁盘。
- 点击 Erase 按钮,将磁盘格式化为 APFS 文件系统,并为磁盘命名(任意名称)。
- 关闭 Disk Utility 窗口。
5. 安装 macOS
- 点击 Reinstall macOS 开始安装过程。
- 当提示选择安装目标时,选择您刚刚格式化的磁盘。
- 等待文件复制完成(可能需要一些时间,具体取决于网络和硬件性能)。
- 安装完成后,设置您的地区、语言和账户信息。
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
注意事项
-
法律合规性:
- 该项目仅包含开源代码,不分发任何受版权保护的材料,也不绕过版权保护措施。
- 根据 Apple 的 EULA,macOS 只能在 Apple 硬件上运行。在非 Apple 硬件上运行可能违反条款,请确保合规使用。
-
macOS 版本支持:
- 默认安装 macOS 13(Ventura)。
- macOS 15(Sequoia)支持尚不完善,可能无法登录 Apple 账户。
-
性能优化:
- 如果遇到 KVM 相关错误,尝试在
docker-compose.yml中添加privileged: true或在docker run命令前添加sudo。 - 确保主机有足够的 CPU 和内存资源以支持虚拟化。
- 如果遇到 KVM 相关错误,尝试在
-
存储管理:
- 数据默认存储在
./macos目录中。您可以通过修改-v参数更改存储位置。 - 如果需要更多磁盘空间,可以在
docker-compose.yml中添加DISK_SIZE环境变量(例如DISK_SIZE=128G)。
- 数据默认存储在
-
网络配置:
- 容器支持通过端口 8006(Web 访问)和 5900(VNC)进行连接。
- 确保防火墙未阻止这些端口。
-
致谢:
- 该项目感谢
seitenca的贡献,以及OpenCore和KVM-OpenCore项目提供的支持。
- 该项目感谢
故障排除
-
KVM 错误:
- 如果容器启动时提示 KVM 相关错误,检查
/dev/kvm设备是否存在并具有正确权限:ls -l /dev/kvm sudo chmod 666 /dev/kvm - 确保未使用 Docker Desktop,且您的 CPU 支持虚拟化(VT-x/AMD-V)。
- 如果容器启动时提示 KVM 相关错误,检查
-
端口冲突:
- 如果端口 8006 或 5900 被占用,修改
docker run或docker-compose.yml中的端口映射,例如-p 8080:8006。
- 如果端口 8006 或 5900 被占用,修改
-
安装失败:
- 确保网络连接稳定,macOS 安装需要下载较大的文件。
- 检查磁盘空间是否充足。
-
性能问题:
- 增加容器分配的 CPU 和内存资源(通过 Docker 设置或
docker-compose.yml中的resources配置)。
- 增加容器分配的 CPU 和内存资源(通过 Docker 设置或
其他资源
- GitHub 仓库:https://github.com/dockur/macos
- Kubernetes 支持:您可以通过以下命令在 Kubernetes 中部署 macOS:
kubectl apply -f https://raw.githubusercontent.com/dockur/macos/refs/heads/master/kubernetes.yml - 相关项目:
- dockur/windows:类似项目,用于在 Docker 中运行 Windows。
- sickcodes/Docker-OSX:另一个运行 macOS 的 Docker 项目。
更多文章
ZCode 说只是做索引,可它翻开的不止当前代码
OpenClaw 2.0 发布:Agent 终于能把没做完的事接着做
“牛来”揭面:智谱 GLM-5.3-Flash 匿名期跑出 44 万亿 Token
GLM-5.3 发布:基座没换,智谱把后训练推到数十倍任务环境
DeepSeek Harness 开源:把 Agent 的整套运行底座拆开了
FFmpeg 9.0 “Lei” 发布:这个版本号,纪念一位中国音视频开发者
DeepSeek-V4-Flash 正式上线:性能超过 GLM,逼近 Opus 4.8,价格更狠
GPT-5.6 Luna 直接降价 80%:百万 Token 输出只要 1.2 美元
Kimi K3 真开源了:2.8T 模型如何只激活 104B 参数?