十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Docker 部署 macOS:一条命令在服务器上跑起带 Web 界面的苹果系统

Docker 部署 macOS:一条命令在服务器上跑起带 Web 界面的苹果系统 Docker 部署 macOS一条命令在服务器上跑起带 Web 界面的苹果系统【免费下载链接】macosMacOS inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/macos/macosmacos是一个把完整 macOS 装进 Docker 容器的开源项目它基于 QEMU KVM 硬件加速容器首次启动时会自动从苹果官方渠道下载恢复镜像安装过程在 8006 端口的网页端完成装好后你得到一台可以在浏览器里直接操作的 macOS 机器并且支持 VNC 端口、USB 直通、宿主机目录共享和独立 IP 等进阶玩法。下面按准备 → 启动 → 安装 → 调参 → 扩展的顺序把整个过程讲清楚。这套容器适合什么场景先明确它解决什么问题你有一台带 KVM 的 Linux 服务器或 Win11 上开了嵌套虚拟化的 Docker Desktop但不想买苹果硬件又需要一个可用的 macOS 来做以下事情在非苹果设备上编译、测试 macOS / iOS 应用搭建可随时丢弃、重建的干净构建环境磁盘文件都在挂载目录里删掉即重置通过浏览器远程访问桌面不用在机房接显示器需要说明的一点项目只包含开源代码macOS 本身由容器在首次启动时自行下载并不随镜像分发。启动前验证 KVM 支持没有 KVM 就没有硬件加速性能会非常差甚至无法安装所以这是第一步。在宿主机执行下面两条命令sudo apt install cpu-checker sudo kvm-ok输出包含KVM acceleration can be used就说明可用也可以顺手确认设备文件存在ls -l /dev/kvm硬件方面需要满足项目最低要求运行时支持 KVM 的 Linux 主机 Docker 或 PodmanWin11 需开启嵌套虚拟化CPU支持 AVX2Intel Haswell四代 Core或 AMD ZenRyzen 1000 系及以后内存4 GB 可用磁盘32 GB 空闲空间默认磁盘镜像 64 GB 是按需分配的但下载与系统更新需要余量两个常见坑Docker Desktop 在 Linux、macOS 和 Windows 10 上都不会把 KVM 暴露给容器因此不支持如果kvm-ok通过了但容器里仍报 KVM 不可用检查 BIOS 里的 VT-x / AMD-V 和宿主是否为虚拟机虚拟机需开嵌套虚拟化最后可以在 Compose 里临时加privileged: true排除权限问题。按你的习惯选择启动命令三种方式信息完全等价选顺手的即可。仓库里自带 compose.yml 和 kubernetes.yml可以直接拿去用。Docker Compose日常推荐把下面内容存成compose.yml再执行docker compose up -dservices: macos: image: dockurr/macos container_name: macos environment: VERSION: 15 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几个参数的作用devices提供 KVM 与 TAP 网络能力NET_ADMIN用于组建容器内网络./macos:/storage保存磁盘镜像和固件状态换目录等于换存储位置stop_grace_period: 2m对应容器内 ACPI 优雅关机流程别把它改得太短否则容易硬断电。Docker CLI临时试用不想维护文件时一条命令即可参数与上面一一对应docker run -it --rm --name macos -e VERSION14 -p 8006:8006 --device/dev/kvm --device/dev/net/tun --cap-add NET_ADMIN -v ${PWD:-.}/macos:/storage --stop-timeout 120 docker.io/dockurr/macosKubernetes 集群部署先把仓库 clone 下来拿到kubernetes.yml含 PVC、Deployment、Service 三件套其中已配置/dev/kvm、/dev/net/tun的 hostPath 挂载然后kubectl apply -f kubernetes.yml首次安装跟着恢复菜单走完六步容器起来后打开http://127.0.0.1:8006接下来按屏幕提示做。首次启动要下载恢复镜像并安装系统视网络速度大约十几分钟中途会出现黑屏加进度条属正常现象恢复镜像下载完成后进入 macOS 恢复菜单选择Disk Utility磁盘工具。选中最大的那块Apple Inc. VirtIO Block Media磁盘点Erase格式化为 APFS名字随便起。关闭磁盘工具点Reinstall macOS安装目标选刚才格式化好的盘。文件拷贝完成后按向导设置地区、语言和键盘。Migration Assistant迁移助理弹窗选Not now。Apple ID界面选Set Up Later再点Skip在Create a Computer Account界面自己设置用户名和密码——你的管理员账号就是这里创建的没有预置账号。装完重启后即进入桌面后续所有操作都在 8006 网页端进行。版本、磁盘与硬件参数的日常调整所有配置都走环境变量改完docker compose up -d重建容器即可生效。选 macOS 版本VERSION控制要装的版本不同版本各自使用独立存储目录互不覆盖取值版本代号15macOS 15Sequoia14macOS 14Sonoma13macOS 13Ventura12macOS 12Monterey11macOS 11Big Sur不设置时默认装 14。官方提醒 macOS 26Tahoe目前可以选但运行很慢暂不推荐。改 CPU / 内存 / 磁盘environment: RAM_SIZE: 8G CPU_CORES: 4 DISK_SIZE: 256G默认是 1 核、4 GB、64 GB。DISK_SIZE也可以用来扩容已有磁盘只增不减、不丢数据扩完后在 macOS 终端执行下面两条命令让文件系统占满新空间diskutil repairDisk disk2 diskutil apfs resizeContainer disk3 0AMD 平台注意初始安装阶段建议保持 1 核、不超过 8 GB 内存部分型号多核会降低性能或导致不稳定超过 8 GB 可能卡在国家选择界面系统稳定运行数小时后再逐步上调。Intel 平台则可以直接给足核心和内存。共享文件、音频与设备直通音频默认关闭。加AUDIO: Y后再到网页端的Settings → Advanced里打开 Audio浏览器才能收到声音流不开时不占带宽。和宿主机互传文件挂一个共享目录进容器再在 macOS 里挂载 9Pvolumes: - ./example:/shared进 macOS 终端执行sudo -S mount_9p shared然后在 Finder 菜单栏Go → Computer里就能看到./example的内容。USB 设备直通先用lsusb查到目标设备的 vendor/product ID然后environment: ARGUMENTS: -device usb-host,vendorid0x1234,productid0x1234 devices: - /dev/bus/usb整块磁盘直通把磁盘或分区映射进容器/disk1会成为主盘/disk2及之后作为从盘devices: - /dev/sdb:/disk1 - /dev/sdc1:/disk2让 macOS 获得独立 IP 或走 DHCP默认是桥接NAT模式macOS 与宿主机共享出口 IP靠端口映射访问。如果需要它像局域网里一台真设备那样有独立地址可以建 macvlan 网络docker network create -d macvlan \ --subnet192.168.0.0/24 \ --gateway192.168.0.1 \ --ip-range192.168.0.100/28 \ -o parenteth0 vlan子网、网口按你的环境改然后在 compose 里指定地址networks: vlan: ipv4_address: 192.168.0.100 networks: vlan: external: true好处是所有端口自动暴露不用再做映射代价是 macvlan 的这台机器无法直接访问 Docker 宿主机本身。更进一步想让容器和 macOS 各自拿到路由器的 DHCP 地址加environment: DHCP: Y devices: - /dev/vhost-net device_cgroup_rules: - c *:* rwm遇到问题时先查这四处容器报 KVM 不可用依次检查 BIOS 虚拟化开关、宿主虚拟机的嵌套虚拟化、云厂商是否支持嵌套 KVM仍不行就临时加privileged: true定位是否是设备权限问题。安装过程卡住AMD 平台先按上文回退到 1 核 ≤8 GB 重试换VERSION: 13之类的旧版本也能绕开新版系统的兼容性问题。Web 界面打不开确认容器还在运行、8006 端口没被占用VNC 客户端则连 5900 端口tcp/udp 都已映射。还有别的参数想调完整的VERSION、MODEL、WIDTH/HEIGHT、BALLOONING动态内存气球、PROTECTWeb 密码保护等变量清单见 环境变量文档。最后提醒一句法务边界安装 macOS 即接受苹果的最终用户许可协议该协议不允许在非苹果硬件上安装所以请只在苹果官方销售的设备上运行此容器。【免费下载链接】macosMacOS inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/macos/macos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表