۱۴۰۵ مهر ۱۵, چهارشنبه
دلار آمریکا۲۶۲٬۲۰۵▼ ۲٫۵۲٪یورو۲۹۴٬۸۳۰▼ ۲٫۸۴٪درهم امارات۷۱٬۷۷۶▼ ۲٫۲۹٪سکه امامی۲۶۷٬۳۸۵٬۰۰۰▼ ۱٫۶۹٪طلای ۱۸ عیار (گرم)۲۶٬۲۶۷٬۶۰۰▼ ۱٫۷۹٪انس طلا۴٬۱۱۶ $▼ ۱٫۱۴٪تتر۲۶۲٬۶۷۸▼ ۲٫۴۱٪بیت‌کوین۸۳٬۷۰۹ $▼ ۲٫۳٪اتریوم۲٬۵۸۴ $▼ ۴٫۲۶٪سولانا۱۱۷٫۵۵ $▼ ۳٫۰۱٪اپل۳۳۳٫۶۳ $▲ ۰٫۲۲٪انویدیا۲۳۹٫۲۴ $▲ ۰٫۱۴٪مایکروسافت۵۲۹٫۳۰ $▲ ۰٫۷۸٪آلفابت (گوگل)۳۴۷٫۶۸ $▲ ۰٫۳۵٪تسلا۳۸۰٫۶۸ $▲ ۰٫۵۲٪شاخص نزدک۲۷٬۶۰۰ $▲ ۰٫۴۵٪
نرخ ارز

مایکروسافت کانتینر لینوکس در WSL را با wslc.exe پایدار اعلام کرد

مایکروسافت WSL containers را پایدار اعلام کرد؛ کانتینر لینوکس در WSL حالا با CLI داخلی wslc.exe و یک API برای برنامه‌های ویندوزی اجرا می‌شود.

کاور گرافیکی DevNA با عنوان «WSL Containers»: پنجره کد با دستورهای wslc برای اجرای کانتینر لینوکس روی ویندوز، کنار لوگوی لینوکس
کاور گرافیکی DevNA با عنوان «WSL Containers»: پنجره کد با دستورهای wslc برای اجرای کانتینر لینوکس روی ویندوز، کنار لوگوی لینوکس
فهرست مطالب
  1. نسبت به پیش‌نمایش چه عوض شد
  2. برای اجرای کانتینر لینوکس در WSL به چه چیزی نیاز دارید
  3. API برای برنامه‌های ویندوزی
  4. زیر پوست WSLC
  5. فرق آن با WSL کلاسیک چیست
  6. چه چیزی هنوز نیامده است

مایکروسافت روز ۲۹ سپتامبر ۲۰۲۶ (۷ مهر ۱۴۰۵) اعلام کرد که WSL containers از مرحله پیش‌نمایش بیرون آمده و به نسخه پایدار (GA) رسیده است؛ یعنی اجرای کانتینر لینوکس در WSL دیگر آزمایشی نیست. از این پس یک باینری داخلی به نام wslc.exe همراه خود WSL می‌آید که با آن می‌توانید کانتینر لینوکس را مستقیم روی ویندوز بسازید، اجرا کنید و به آن وصل شوید. در کنار این CLI، یک API هم عرضه شده تا برنامه‌های ویندوزی بتوانند از داخل کد خودشان کانتینر لینوکس را راه بیندازند.

نسبت به پیش‌نمایش چه عوض شد

WSL containers نخستین بار ۲۹ ژوئن ۲۰۲۶ به‌صورت پیش‌نمایش عمومی معرفی شد؛ آن موقع فقط روی نسخه پیش‌انتشار WSL 2.9.3 کار می‌کرد و مایکروسافت عرضه پایدار را برای پاییز ۲۰۲۶ هدف گرفته بود. حالا WSL 3.0.1 منتشر شده و یادداشت انتشار آن می‌نویسد «WSLc is generally available»؛ در فهرست تغییرات همان یادداشت، حذف ارجاع‌ها به پیش‌نمایش بودن WSLC هم آمده است.

در همین عرضه پایدار چند قابلیت تازه هم اضافه شده است: wslc container restart و wslc container cp، wslc system info، wslc network connect و wslc network disconnect، ساخت شبکه با گزینه‌های دلخواه درایور، wslc events برای دیدن لحظه‌ای فعالیت کانتینرها، پشتیبانی از health check، پارامتر --stop-timeout و پشتیبانی از --mount هنگام ساخت یا اجرای کانتینر. مایکروسافت می‌گوید wslc.exe یک نام مستعار داخلی به اسم container.exe هم دارد.

برای تیم‌های سازمانی، با کنترل‌های Microsoft Intune می‌توانید WSL container را فعال یا غیرفعال کنید و دریافت ایمیج را به رجیستری‌های تأییدشده محدود کنید؛ پوشش افزونه Microsoft Defender for Endpoint هم به کانتینرها گسترش یافته است.

برای اجرای کانتینر لینوکس در WSL به چه چیزی نیاز دارید

مستندات رسمی تصریح می‌کنند که این قابلیت به WSL 2.9.3 یا بالاتر نیاز دارد. دستورهای نمونه زیر از همان مستندات برداشته شده‌اند؛ دو خط اول را برای به‌روزرسانی و بررسی نسخه، خودمان به ابتدای آن‌ها افزوده‌ایم:

# Update WSL and check the installed version
wsl --update
wsl --version

# Run a container
wslc run --rm -it ubuntu:latest bash -c "echo Hello world from WSL container!"

# List available images
wslc image ls

# Run a web server
wslc run -it --rm -d -p 8080:80 --name web nginx

# Get its content
curl localhost:8080

# List the container, then stop it
wslc container ps
wslc container stop web

اگر با آموزش Docker کار کرده باشید، شکل این دستورها برایتان آشناست؛ هدف اعلام‌شده مایکروسافت هم دقیقاً همین بوده که رابط CLI آشنا بماند.

API برای برنامه‌های ویندوزی

بخش دوم ماجرا به توسعه‌دهنده‌های ویندوز مربوط است. API در بسته NuGet با نام Microsoft.WSL.Containers عرضه شده و هم پروجکشن (projection) C# دارد و هم هدرهای C++/WinRT. مایکروسافت نوشته که پروجکشن C++/WinRT فعلاً پیش‌نمایش است و ممکن است تغییرات ناسازگار (breaking change) داشته باشد.

ساختار API حول چهار شیء می‌چرخد: WslcService نقطه ورود ایستا برای بررسی نصب اجزای لازم و نسخه سرویس است، Session میزبانی است که کانتینرها داخلش اجرا می‌شوند و ایمیج‌ها را مدیریت می‌کند، Container خود کانتینر است و Process یک فرایند لینوکسی داخل آن است که می‌توانید stdout و stderr آن را بخوانید و روی stdin بنویسید.

زیر پوست WSLC

پیر بوله (Pierre Boulay)، مهندس ارشد نرم‌افزار مایکروسافت، همان روز یادداشتی درباره معماری WSLC منتشر کرد. نکته کلیدی این است که برخلاف WSL، سرویس wslservice.exe مالکیت ماشین مجازی را در دست نمی‌گیرد؛ به‌جایش «یک فرایند فرزند به نام wslcsession.exe می‌سازد که به‌نمایندگی از کاربر فراخوان اجرا می‌شود». به نوشته بوله، این مدل هم «جداسازی قوی بین سشن‌ها» می‌آورد، چون هر سشن در فرایند جداگانه‌ای اجرا می‌شود، و هم مرزهای امنیتی را تقویت می‌کند.

ماشین‌های مجازی با سرویس محاسبات میزبان (Host Compute Service یا HCS) ساخته می‌شوند و به نوشته بوله فایل‌های VHD هر سشن در مسیر %AppData%\Local\wslc\sessions ذخیره می‌شوند. برای mount کردن مسیرهای ویندوزی داخل کانتینر هم از virtiofs استفاده شده است. مایکروسافت مقایسه سرعت را فقط برای همین لایه دسترسی به فایل مطرح می‌کند و می‌نویسد «در مقایسه با plan9، سرعت virtiofs حدود دو برابر است»؛ نه اینکه کل WSLC دو برابر سریع‌تر باشد.

فرق آن با WSL کلاسیک چیست

در WSL معمولی شما یک توزیع کامل لینوکس بالا می‌آورید و بعد ابزارهای کانتینر را داخل آن نصب می‌کنید. در WSLC خود wslc.exe به‌عنوان باینری داخلی همراه WSL می‌آید، سشن و ماشین مجازی را می‌سازد و ایمیج‌های کانتینر را مستقیم اجرا می‌کند. یعنی برای شروع کار با کانتینر لینوکس روی ویندوز، نصب یک ابزار جداگانه لازم نیست. کد WSLC هم متن‌باز است و در مخزن microsoft/WSL قرار دارد.

چه چیزی هنوز نیامده است

مهم‌ترین کمبود را خود مایکروسافت در اعلامیه عرضه پایدار نوشته است: «مهم‌ترین درخواست کاربران برای WSLc افزودن پشتیبانی از compose است و تمرکز ما در تکرارهای بعدی همین خواهد بود.» هدف اعلام‌شده این است که فایل‌های compose.yaml موجودتان بدون تغییر کار کنند، اما فعلاً چنین چیزی در دسترس نیست.

نتیجه عملی برای شما: اگر گردش کار توسعه‌تان تک‌کانتینری است یا سرویس‌ها را جداگانه بالا می‌آورید، WSLC از امروز بدون ابزار جانبی روی ویندوز کار می‌کند. اما اگر روزتان با بالا آوردن چند سرویس از یک فایل compose شروع می‌شود، هنوز باید منتظر تکرارهای بعدی بمانید. برای مرحله‌های بعدی همین مسیر، آموزش CI/CD با GitHub Actions و خبر انتشار Kubernetes 1.37 را هم بخوانید.

$ devna rate --article

—
هنوز رأیی ثبت نشده
  1. ۵۰
  2. ۴۰
  3. ۳۰
  4. ۲۰
  5. ۱۰

این مطلب چقدر به کارتان آمد؟

روی ستاره‌ها بزنید

واکنش شما

اولین نفری باشید که واکنش نشان می‌دهد.

پرسش‌های پرتکرار

برای استفاده از wslc به چه نسخه‌ای از WSL نیاز دارم؟

مستندات مایکروسافت می‌گویند این قابلیت به WSL 2.9.3 یا بالاتر نیاز دارد. با wsl --update به‌روزرسانی کنید و با wsl --version نسخه را ببینید.

آیا wslc از فایل‌های compose پشتیبانی می‌کند؟

خیر. مایکروسافت در اعلامیه عرضه پایدار نوشته که compose مهم‌ترین درخواست کاربران است و تمرکز تکرارهای بعدی روی همین خواهد بود؛ هدف اعلام‌شده این است که فایل‌های compose.yaml موجود بدون تغییر کار کنند.

تفاوت WSL containers با WSL معمولی چیست؟

در WSL معمولی یک توزیع کامل لینوکس بالا می‌آید و ابزارها را داخل آن نصب می‌کنید. در WSL containers باینری داخلی wslc.exe خودش سشن و ماشین مجازی می‌سازد و ایمیج‌های کانتینر را مستقیم اجرا می‌کند.

آیا می‌توانم از داخل یک برنامه ویندوزی کانتینر اجرا کنم؟

بله. API در بسته NuGet با نام Microsoft.WSL.Containers عرضه شده و پروجکشن C# و هدرهای C++/WinRT دارد؛ پروجکشن C++/WinRT هنوز پیش‌نمایش است.

منابع

  1. WSL container — Microsoft Learn
  2. WSL containers is now generally available — Windows Developer Blog
  3. WSLC Architecture deep dive — Windows Command Line
  4. Release 3.0.1 · microsoft/WSL
  5. WSL container is now available for public preview — Windows Command Line

خطایی در این مطلب دیدید؟ به تحریریه گزارش دهید؛ اصلاحیه‌ها طبق اصول تحریریه ثبت می‌شوند.

دیدگاه‌ها

۰/۲٬۰۰۰

دیدگاه‌ها پس از بررسی تحریریه منتشر می‌شوند. توهین، تبلیغ و لینک‌های بی‌ربط حذف می‌شوند؛ نقد فنی و مستند همیشه خوش‌آمد است.

$ comments --count۰

هنوز کسی چیزی ننوشته. اولین دیدگاه را شما ثبت کنید.

مطالب مرتبط