在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
英文地址,請注明出處:http://en.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 是兩個強…