在Docker中运行macOS的超方便体验!

在数字化和开发人员快速迭代的今日,拥有一个便捷、高效的开发环境成为每个开发者梦寐以求的事情。特别是在需要操作多个系统、开发跨平台应用时,调试和测试的便利性显得尤为重要。今天为大家介绍的这款开源项目,正是一个解决此类问题的利器——将macOS置于Docker容器中运行。

什么是OSX in Docker?

这个开源项目的核心目标就是在Docker容器中运行完整的macOS系统。通过这样的方式,开发者可以在非苹果设备上运行macOS,为跨平台开发、测试提供了一种高效、灵活的环境。

主要特性✨

  1. KVM硬件加速:通过KVM技术的支持,使得macOS在虚拟化环境中可以更快地运行。
  2. 基于Web的查看器:只需通过浏览器即可访问macOS界面,方便管理和操作。
  3. 自动下载:简化安装过程,可以自动从网络获取系统镜像,并完成之后的安装步骤。

使用方法🐳

使用Docker Compose

通过Docker Compose,你可以非常方便地启动和管理macOS容器。下面是一个简单的Docker Compose文件配置:

services:macos:image: dockurr/macoscontainer_name: macosenvironment:VERSION: "13"devices:- /dev/kvm- /dev/net/tuncap_add:- NET_ADMINports:- 8006:8006- 5900:5900/tcp- 5900:5900/udpvolumes:- ./macos:/storagerestart: alwaysstop_grace_period: 2m
使用Docker CLI

如果你更习惯于命令行操作,下面的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
在Kubernetes中运行

对容器编排有需求的用户可以选择在Kubernetes集群中部署macOS:

kubectl apply -f https://raw.githubusercontent.com/dockur/macos/refs/heads/master/kubernetes.yml
Github Codespaces

如果你已经在使用GitHub Codespaces,你可以通过该平台快速创建和使用macOS容器。

(https://codespaces.new/dockur/macos)

常见问题解答💬

如何开始使用?

启动容器后,在浏览器中访问http://127.0.0.1:8006/,选择磁盘工具,选择最大的Apple Inc. VirtIO Block Media磁盘。点击抹掉按钮,以APFS格式化磁盘,命名自定义名称。然后进行macOS的安装。当被问及安装位置时,选择刚创建的磁盘。

如何选择macOS的版本?

默认情况下,容器将安装macOS 13 (Ventura)。你可以通过VERSION环境变量来指定安装的macOS版本:

environment:VERSION: "13"

支持的macOS版本包括:

  • 15 - macOS 15 (Sequoia)
  • 14 - macOS 14 (Sonoma)
  • 13 - macOS 13 (Ventura)
  • 12 - macOS 12 (Monterey)
  • 11 - macOS 11 (Big Sur)

如何更改存储位置?

你可以通过修改compose文件中的绑定挂载来更改存储位置:

volumes:- ./macos:/storage

如何调整磁盘大小?

默认磁盘大小为64 GB,若需更大容量,可以在compose文件中添加DISK_SIZE设置:

environment:DISK_SIZE: "256G"

如何更改CPU和内存大小?

默认情况下,容器将使用最多2个CPU核心和4 GB内存。可以通过以下环境变量来调整配置:

environment:RAM_SIZE: "8G"CPU_CORES: "4"

如何为容器分配独立的IP地址?

为了为容器分配单独的IP地址,可以创建一个macvlan网络:

docker network create -d macvlan \--subnet=192.168.0.0/24 \--gateway=192.168.0.1 \--ip-range=192.168.0.100/28 \-o parent=eth0 vlan

在创建网络后,修改compose文件以加入新的网络配置:

services:macos:container_name: macosnetworks:vlan:ipv4_address: 192.168.0.100networks:vlan:external: true

如何共享主机的文件?

使用以下方式将主机目录映射为共享文件夹:

volumes:- ./example:/shared

启动macOS后执行以下命令挂载共享文件夹:

sudo -S mount_9p shared

macOS in Docker 的法律问题

使用此项目需遵守所在地区的法律法规,项目本身遵循开源协议,未包含任何受著作权保护的材料。然而,安装和运行苹果的macOS要求用户同意 Apple’s EULA 条款,这意味着你只能在苹果的硬件上运行,否则可能违反其使用条款。

类似项目介绍

  1. dockur/windows:允许在Docker容器中运行Windows系统,支持自动化安装和良好的性能加速。
  2. qemus/qemu:通过该项目可以在容器中运行Linux桌面,在使用上与macOS项目类似,适合需要多系统环境的开发者。

通过以上内容的详细介绍,相信大家对macOS in Docker项目有了更清晰的认识和了解。对于需要在多平台间进行开发调试的开发者,这无疑是一个不可多得的利器。快去尝试在你的开发环境中部署吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88330.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kettle导入Excel文件进数据库时,数值发生错误的一种原因

1、问题描述及原因 在使用kettle读取Excel文件、并导入数据库时,需要读取Excel中的数值、日期(或日期时间、时间)、文本这三种类型的列进来,发现读取其中的数值时,读取的数字就不对。 经调查,原因是,在“导出数据为E…

Windows安装DevEco Studio

1. 概述 DevEco Studio是华为基于IDEA Community开源工具开发的一站式HarmonyOS应用及元服务开发平台,为开发者提供代码开发、编译构建以及调测等功能 2. 运行环境要求 操作系统:Windows10 64位、Windows11 64位 内存:16GB及以上 硬盘&…

PLC框架-1.3.2 报文750控制汇川伺服的转矩上下限

本文介绍1200PLC如何使用750报文设定伺服转矩的上下限。 750号报文 PLC---->伺服 (控制) 伺服--->PLC (状态) PZD1

Redis知识集合---思维导图(持续更新中)

一、Redis中常见的数据类型有哪些?二、Redis为什么这么快?三、为什么Redis设计为单线程?6.0版本为何引入多线程?四、

mac m1安装大模型工具vllm

1 更新系统环境 参考vllm官网文档,vllm对apple m1平台mac os, xcoder, clang有如下要求 OS: macOS Sonoma or later SDK: XCode 15.4 or later with Command Line Tools Compiler: Apple Clang > 15.0.0 在App Store更新macOS和XCoder,依据XCoder版本…

解锁localtime:使用技巧与避坑指南

目录 一、引言 1.1 背景与目的 1.2 localtime 函数简介 二、localtime 函数详解 2.1 函数原型与参数 2.2 返回值与 tm 结构体 2.3 基本使用示例 三、localtime 函数的缺陷剖析 3.1 多次调用同一共享区间导致错误 3.1.1 问题现象展示 3.1.2 原因深入分析 3.1.3 实际影…

郑州机械设计研究所 -PHM产品序列概览

1.设备状态监测系统 动态信号监测很像是三个独立通道,振动,转速,然后高频的某个频带。或者是同一个振动信号做的低频和高频两个带通,时域和频域组图。实时检测,很明显是24个时 -频指标。 动态分析看起来像趋势图。 2.…

《棒垒球知道》奥运会的吉祥物是什么·棒球1号位

Olympic Mascots & Baseball/Softball Games History ⚾(奥运吉祥物与棒垒球赛事全科普)1984洛杉矶奥运会 / Los Angeles 1984Mascot: Sam the Eagle(山姆鹰)美国精神象征,红白蓝配色超吸睛!Baseball/S…

【提高篇-基础知识与编程环境:1、Linux系统终端中常用的文件与目录操作命令】

Linux终端提供了丰富的命令来操作文件和目录,以下简单介绍一些常用的命令: 一、目录操作命令 pwd - 显示当前工作目录 pwd #输出当前所在目录的绝对路径 cd - 切换目录 cd /path/to/directory # 切换到指定目录 cd … # …

前端性能优化:从之理论到实践的破局道

🚀 前端性能优化:从之理论到实践的破局道 摘要:本文针对首屏加载、渲染卡顿等核心痛点,结合当前主流技术栈给出可落地的优化方案一、为什么你的页面"又慢又卡"? 用户真实体验数据: 加载时间超过3…

2025年最新Python+Playwright自动化测试- 隐藏元素定位与操作

1.简介 对于前端隐藏元素,一直是自动化定位元素的隐形杀手,让人防不胜防。脚本跑到隐藏元素时位置时报各种各样的错误,可是这种隐藏的下拉菜单又没有办法避免,所以非常头痛,这一篇只为交流隐藏元素自动化定位处理方法以…

跨境电商税务解决之道:在合规航道上驶向全球市场

首席数据官高鹏律师数字经济团队创作AI辅助当某3C品类跨境卖家因未同步境内交易流水被处以20万元罚款,当某服饰品牌因欧盟增值税申报疏漏导致货物滞留港口,当东南亚市场的“低税率红利”变成“税务稽查雷区”——跨境电商的黄金时代里,税务合…

(6)机器学习小白入门 YOLOv:图片的数据预处理

(1)机器学习小白入门YOLOv :从概念到实践 (2)机器学习小白入门 YOLOv:从模块优化到工程部署 (3)机器学习小白入门 YOLOv: 解锁图片分类新技能 (4)机器学习小白入门YOLOv :图片标注实操手册 (5)机器学习小白入门 YOLOv:…

康谋新闻 | 康谋加入ASAM组织,全球首个ASIL-D认证自动驾驶仿真平台aiSim引领安全新标杆

康谋新闻康谋科技正式加入全球汽车标准化组织 ASAM(Association for Standardization of Automation and Measuring Systems),成为其正式会员单位!ASAM作为国际汽车行业标准化领域的权威机构,致力于推动仿真、测试及数…

《PyQt6-3D:开启Python 3D开发新世界》

一、引言 在 Python 的广袤开发世界中,3D 开发领域正以惊人的速度蓬勃发展,为众多领域带来了前所未有的创新与变革。从沉浸式的游戏体验到逼真的虚拟现实场景,从精准的工业设计模拟到生动的影视动画制作,3D 技术的身影无处不在&am…

第一届OpenHarmonyCTF--Crypto--WriteUp

第一届OpenHarmonyCTF–Crypto–WriteUp Ea5y_rsa题目附件解压后寻找有用的源代码: // RsaUtil import { cryptoFramework } from kit.CryptoArchitectureKit; import { buffer } from kit.ArkTS;class RsaUtil{private keyPair: cryptoFramework.KeyPair | null n…

Copilot 在 VS Code 中的免费替代方案

## 引言随着 GitHub Copilot 推出付费 Pro 版,许多开发者开始寻找免费替代方案。本文精选 7 款 2025 年主流免费 AI 编程工具,涵盖不同使用场景和编程语言需求。## 主流替代方案对比| 工具名称 | 核心优势 | 支持语…

视频能转成gif动图吗?怎么弄?

在一些社交平台中,分享短小有趣的片段。GIF自动循环播放,无需用户点击。兼容性高,几乎所有平台都支持直接预览。例子:将电影/综艺的搞笑片段转为GIF传播。游戏精彩操作截取为GIF分享。这就需要我们掌握把视频转换成gif动图的技术&…

【Pyhton】Json.dump 语法说明

目录json.dump() 的语法参数说明1. obj2. fp3. skipkeys4. ensure_ascii5. check_circular6. allow_nan7. cls8. indent9. separators10. default11. sort_keys**示例代码****基本用法**使用 indent 和 separators使用 default 参数总结json.dump() 是 Python 中 json 模块用于…

LangGraph-2-interrupt 流程中断

interrupt 是 LangGraph 中一个强大的流程控制机制,允许在状态机执行过程中根据特定条件中断当前流程并跳转到其他节点。这种机制特别适用于处理异常情况、用户中断或特定业务规则的触发。在 LangGraph 中,interrupt_before 和 interrupt_after 是两个强…