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

فهرست مطالب
مایکروسافت روز ۲۹ سپتامبر ۲۰۲۶ (۷ مهر ۱۴۰۵) اعلام کرد که 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 را هم بخوانید.




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