اگر از تکراری شدن چرخهٔ کپی فایل بین محیط ویرایشگر مک و محیط اجرای لینوکس خسته شدهاید، اپل راهکار نهایی را ارائه داده است. از ۱۰ ژوئن ۲۰۲۶، ابزار Container Machine به شما اجازه میدهد محیطی کامل از لینوکس را اجرا کنید که برخلاف کانتینرهای گذرا، مانند یک ماشین مجازی پایدار رفتار میکند.
بسیاری از کانتینرهای فعلی فقط برای اجرای یک اپلیکیشن طراحی شدهاند، اما یک ماشین کانتینری — شبیه به یک کامپیوتر کامل است که در دل یک برنامه کوچک جا شده — بر اساس محیط کامل لینوکس مدل شده است. طبق مستندات github.com، این ابزار سیستم init تصویر را اجرا میکند؛ یعنی شما میتوانید از دستور systemctl برای مدیریت سرویسهایی مثل PostgreSQL استفاده کنید. این قابلیت برای توسعهدهندگانی که به یک توزیع واقعی لینوکس برای تست نیاز دارند اما نمیخواهند هزینهی سختافزاری یک ماشین مجازی (VM) کامل را بپردازند، یک پل ارتباطی حیاتی است.
همانطور که در تحلیلهای پیشین ما دربارهی بهینهسازی محیطهای توسعه اشاره کردیم، یکپارچگی با میزبان کلید بهرهوری است. نقطه قوت این سیستم در ادغام عمیق با macOS است. پوشه Home شما در مک بهطور خودکار در مسیر /Users/<username> داخل کانتینر قرار میگیرد. بنابراین، تمام فایلهای تنظیمات (dotfiles) و مخازن کد شما بهطور همزمان در هر دو پلتفرم در دسترس هستند.
یکپارچگی و جریان کاری
ماشینهای کانتینری سریع و سبک هستند و از تصاویر استاندارد OCI (Open Container Initiative) استفاده میکنند که میتوان آنها را ساخت و به اشتراک گذاشت. این معماری اجازه میدهد جریان کاری «ویرایش در مک، بیلد در لینوکس» بهطور کامل پیاده شود. مخزن کد شما در $HOME مک قرار دارد و مستقیماً در ماشین کانتینری متصل میشود.
این سازوکار نیاز به هرگونه مرحلهٔ کپی بین ساخت و بازبینی را حذف میکند. ابزارهای بومی مک — از جمله پروفایلرها، ابزارهای اسکرینشات، مرورگرها و دیباگرهای گرافیکی — دقیقاً همان فایلهایی را میبینند که ماشین کانتینری میبیند. شما میتوانید از IDE محبوب خود در مک استفاده کنید و در عین حال، آرتیفکتهای بومی لینوکس را کامپایل و اجرا کنید.
مشخصات فنی و نحوه اجرا
بر اساس بررسی مستندات فنی، قابلیتهای کلیدی این ابزار عبارتند از:
- پشتیبانی از توزیعهای مختلف: امکان ایجاد ماشینهای مجزا برای Alpine، Ubuntu یا Debian. هر یک از اینها به همان
$HOMEو فایلهای تنظیمات مک دسترسی دارند و به شما اجازه میدهند اپلیکیشنها را سریعاً در توزیعهای مختلف تست کنید. - کنترل منابع: تغییر تعداد CPU و میزان رم از طریق دستور
container machine set(مثلاًcpus=4وmemory=8G). مقدار پیشفرض رم، نصف حافظه میزبان است. - گزینههای اتصال: قابلیت تنظیم دسترسی پوشه Home به صورت خواندنی-نوشتنی (
rwکه پیشفرض است)، فقط خواندنی (ro) یا حذف کامل (none). - ابزارهای بومی: به دلیل اشتراک فایلها، پروفایلرهای بومی مک و دیباگرهای گرافیکی میتوانند آرتیفکتهای لینوکس را بدون نیاز به مرحله کپی بازبینی کنند.
برای شروع، کاربر میتواند دستور container machine create alpine:latest --name dev را اجرا کند. برای ورود به محیط، دستور container machine run -n dev یک شل تعاملی را باز میکند که نام کاربری آن با حساب میزبان یکی است و نه کاربر root. برای اجرای تکدستورها نیز میتوان از دستوراتی مثل container machine run -n dev uname -a یا container machine run -n dev -- cat /proc/cpuinfo استفاده کرد.
مدیریت این ماشینها با نام مستعار m ساده شده است (مثلاً m ls یا m run). شما میتوانید لیست تمام ماشینها را با container machine ls ببینید، جزئیات JSON را با container machine inspect dev دریافت کنید یا یک ماشین و حافظه پایدار آن را با container machine rm dev حذف کنید.
برای کسانی که تنظیمات سفارشی میخواهند، هر تصویر لینوکسی که دارای /sbin/init باشد کار میکند. برای تصویر Ubuntu 24.04، فایل Dockerfile باید شامل systemd، dbus، openssh-server و net-tools باشد. همچنین باید سرویسهایی مانند console-getty.service و systemd-update-utmp.service ماسک (mask) شوند.
اپل همچنین مسیری برای شخصیسازی تجربه اولین بوت فراهم کرده است؛ با افزودن یک اسکریپت اجرایی در مسیر /etc/machine/create-user.sh به تصویر، این اسکریپت یکبار با دسترسی root اجرا میشود. این اسکریپت به متغیرهایی از جمله CONTAINER_USER، CONTAINER_UID، CONTAINER_GID، CONTAINER_HOME و CONTAINER_MACHINE_ID دسترسی دارد.
این تغییر، چرخه توسعه محلی را با حذف مرحله «ساخت و سپس انتقال» دگرگون میکند. بهجای ارسال کد به یک سرور راه دور یا VM مجزا برای بررسی عملکرد در لینوکس، اجرا در یک لایه سبک درست زیر رابط کاربری macOS رخ میدهد.
برای یک توسعهدهنده معمولی، این یعنی IDE روی مک میماند اما کامپایلر و محیط اجرا کاملاً لینوکسی است. در واقع، کانتینر به جای یک مقصد مجزا، به یک لایه اجرای شفاف تبدیل شده است.
در نهایت، این ابزار خط لوله بینپلتفرمی را ساده میکند تا دیگر نیازی نباشد بین راحتی ابزارهای مک و ضرورت باینریهای لینوکس یکی را انتخاب کنید. برای بررسی بیشتر، میتوانید مخزن رسمی در گیتهاب را برای ساخت تصویر Ubuntu 24.04 با پشتیبانی از systemd مشاهده کنید.
گام بعدی شما
- اگر از توزیع Ubuntu استفاده میکنید، مخزن رسمی گیتهاب اپل را برای ساخت تصویر 24.04 با پشتیبانی از systemd بررسی کنید.
- دستور
container machine lsرا برای شناسایی ماشینهای فعال اجرا کرده و منابع آنها را با دستورsetبهینه کنید. - جریان کاری خود را از انتقال دستی فایل به استفاده از Mount مستقیم پوشه Home تغییر دهید.
اما داستان سختافزاری این تحول و نحوه مدیریت حافظه در تراشههای سری M حتی شگفتانگیزتر است — به تحلیل ما درباره معماری حافظه اپل مراجعه کنید.




گفتگو