توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

برای کار کامل با یک پروژه Docker در WSL، باید WSL 2 را نصب کنید. در زمان نگارش، استفاده از آن فقط به عنوان بخشی از مشارکت در برنامه Windows Insider امکان پذیر است (WSL 2 در بیلدهای 18932 و بالاتر موجود است). همچنین لازم به ذکر است که برای نصب و پیکربندی Docker Desktop به نسخه Windows 10 Pro نیاز است.

گام های نخست

پس از پیوستن به برنامه Insider و نصب به روز رسانی ها، باید یک توزیع لینوکس (اوبونتو 18.04 در این مثال) و Docker Desktop با WSL 2 Tech Preview را نصب کنید:

  1. Docker Desktop WSL 2 Tech Preview
  2. اوبونتو 18.04 از فروشگاه ویندوز

در هر دو نقطه ما تمام دستورالعمل های نصب و پیکربندی را دنبال می کنیم.

نصب توزیع اوبونتو 18.04

قبل از اجرای اوبونتو 18.04، باید Windows WSL و Windows Virtual Machine Platform را با اجرای دو دستور در PowerShell فعال کنید:

  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux (نیاز به راه اندازی مجدد کامپیوتر دارد)
  2. Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

پس از آن باید مطمئن شویم که از WSL v2 استفاده خواهیم کرد. برای انجام این کار، در ترمینال WSL یا PowerShell، دستورات زیر را اجرا کنید:

  • wsl -l -v - ببینید کدام نسخه در حال حاضر نصب شده است. اگر 1 بود، پس از این لیست به سمت پایین تر حرکت می کنیم
  • wsl --set-version ubuntu 18.04 2 - برای به روز رسانی به نسخه 2
  • wsl -s ubuntu 18.04 - اوبونتو 18.04 را به عنوان توزیع پیش فرض نصب کنید

اکنون می توانید اوبونتو 18.04 را راه اندازی کرده و آن را پیکربندی کنید (نام کاربری و رمز عبور خود را مشخص کنید).

نصب Docker Desktop

دستورالعمل ها را در طول مراحل نصب دنبال کنید. کامپیوتر پس از نصب و در اولین راه‌اندازی برای فعال کردن Hyper-V (که برای پشتیبانی از ویندوز 10 پرو نیاز دارد) نیاز به راه‌اندازی مجدد دارد.

مهم! اگر Docker Desktop مسدود شدن توسط فایروال را گزارش کرد، به تنظیمات آنتی ویروس بروید و تغییرات زیر را در قوانین فایروال اعمال کنید (در این مثال، Kaspersky Total Security به عنوان آنتی ویروس استفاده می شود):

  • به تنظیمات -> امنیت -> فایروال -> پیکربندی قوانین بسته -> سرویس محلی (TCP) -> ویرایش بروید
  • پورت 445 را از لیست پورت های محلی حذف کنید
  • ذخیره

پس از راه اندازی Docker Desktop، WSL 2 Tech Preview را از منوی زمینه آن انتخاب کنید.

توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

در پنجره باز شده روی دکمه Start کلیک کنید.

توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

Docker و docker-compose اکنون در توزیع WSL در دسترس هستند.

مهم! Docker Desktop به روز شده اکنون دارای یک برگه با WSL در داخل پنجره تنظیمات است. پشتیبانی WSL در آنجا فعال است.

توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

مهم! علاوه بر چک باکس فعال سازی WSL، شما همچنین باید توزیع WSL خود را در برگه Resources->WSL Integration فعال کنید.

توسعه با Docker در زیر سیستم ویندوز برای لینوکس (WSL)

راه اندازی

آنچه غیرمنتظره بود، مشکلات زیادی بود که هنگام تلاش برای بلند کردن کانتینرهای پروژه واقع در فهرست کاربر ویندوز به وجود آمد.

انواع خطاهای مرتبط با راه‌اندازی اسکریپت‌های bash (که معمولاً هنگام ساخت کانتینر برای نصب کتابخانه‌ها و توزیع‌های لازم شروع می‌شوند) و سایر موارد رایج برای توسعه در لینوکس، ما را به فکر قرار دادن پروژه‌ها مستقیماً در فهرست کاربر Ubuntu 18.04 انداخت.

.

از راه حل مشکل قبلی، موارد زیر است: نحوه کار با فایل های پروژه از طریق یک IDE نصب شده در ویندوز. به عنوان "بهترین تمرین"، من فقط یک گزینه برای خودم پیدا کردم - کار از طریق VSCode (اگرچه من از طرفداران PhpStorm هستم).

پس از دانلود و نصب VSCode حتما آن را در افزونه نصب کنید بسته الحاقی توسعه از راه دور.

پس از نصب افزونه فوق، به سادگی دستور را اجرا کنید code . در دایرکتوری پروژه زمانی که VSCode در حال اجرا است.

در این مثال، nginx برای دسترسی به کانتینرها از طریق مرورگر مورد نیاز است. آن را از طریق نصب کنید sudo apt-get install nginx معلوم شد که خیلی ساده نیست. ابتدا باید توزیع WSL را با اجرا به روز کنیم sudo apt update && sudo apt dist-upgradeو تنها پس از آن نصب nginx را شروع کنید.

مهم! همه دامنه‌های محلی نه در فایل /etc/hosts توزیع لینوکس (حتی در آنجا نیست)، بلکه در فایل میزبان (معمولاً C:WindowsSystem32driversetchosts) ویندوز 10 ثبت می‌شوند.

منابع

شرح دقیق تر هر مرحله را می توان در اینجا یافت:

منبع: www.habr.com

اضافه کردن نظر