من خلال تقديم نظام ويندوز الفرعي لنظام التشغيل ويندوز للينكس (WSL)، أتاحت مايكروسوفت الفرصة للمطورين لتشغيل بيئة جنو/لينكس مباشرة على ويندوز، دون تعديل، دون الحاجة إلى استخدام جهاز افتراضي. وهذا حل رائع لأن الكثير من المطورين يستخدمون نظاماً للبرمجة وآخر للترفيه.
لا تزال WSL قيد التطوير، ولكنها مناسبة حاليًا لـ تطوير البرمجياتفي الإصدارين الأول والثاني. من خلال تصفح المشاكل والأسئلة التي تم الإبلاغ عنها على الإنترنت، يبدو أن معظمها يتعلق بتكامل WSL مع Docker، خاصة عندما يتعلق الأمر بالترقية من WSL 1 إلى WSL 2.
ستبدد هذه المقالة كل الغموض وتساعدك على اجتياز هذه العملية دون عناء. إذا لم يكن لديك WSL 1 وتريد الحصول على WSL 2 مع Docker، يمكنك الانتقال مباشرةً إلى الفصل الأخير.
ما الذي ستكسبه؟
- أحدث نواة Linux مستقرة حقيقية (تم ضبطها بواسطة Microsoft). يحتوي WSL 1 على واجهة نواة متوافقة مع لينكس بدون نواة لينكس الكود.
- زيادة أداء الإدخال والإخراج للملفات. أسرع بما يصل إلى 20 ضعفًا مقارنةً ب WSL 1 عند تفريغ كرات القطران المضغوطة، وأسرع بحوالي 2-5 أضعاف عند استخدام استنساخ git
, تثبيت npm
و سميك
في مشاريع مختلفة.
- توافق كامل مع استدعاءات النظام. تستخدم ثنائيات Linux استدعاءات النظام لأداء العديد من الوظائف، مثل الوصول إلى الملفات وطلب الذاكرة وإنشاء العمليات وغيرها الكثير. بينما استخدمت WSL 1 طبقة ترجمة تم إنشاؤها بواسطة WSL الفريق، يتضمن WSL 2 نواة Linux الخاصة به مع توافق كامل مع استدعاءات النظام.
- الملفات المخزنة في قسم ext4 أصلي على قرص افتراضي.
- طريقة سهلة للغاية للتكامل مع Docker.
أعتقد أنه بالنسبة لمعظم المستخدمين، يبدو أداء الإدخال والإخراج للملفات وسهولة تكامل docker أسبابًا كافية.
هيا بنا نذهب!
أفترض أن لديك أحدث إصدار مستقر من Windows 10 Pro. أما اليوم فهو الإصدار 1909.
انضم إلى المطلعين على Windows
حالياً، يتوفر WSL 2 لنظام التشغيل Windows 10 في الحلقة البطيئة الداخلية فقط. على حد علمي، يجب أن يتوفر الإصدار المستقر في مايو 2020 (إصدار 20H1). تعد الحلقة البطيئة حلاً آمناً تماماً للمستخدمين الذين يرغبون في الحصول على ميزات جديدة قبل ذلك بقليل، تم اختبارها مسبقاً من قبل مستخدمي الحلقة السريعة. تحصل الحلقة البطيئة على تحديثات النظام مرة أو مرتين في الشهر. يمكنك القراءة عن تغييرات الإصدار البطيء في مستند مايكروسوفت المسمى مركز الطيران.
للانضمام، ما عليك سوى اتباع صفحة Microsoft الرسمية الدليل. إنه سهل للغاية ويستغرق حوالي 15 دقيقة دون فقدان أي بيانات شخصية.
ترقية WSL 1 إلى WSL 2
اتبع الموقع الرسمي الدليل. كما أنه سهل للغاية، بضعة أوامر من أوامر الصدفة وها أنت ذا! قد يستغرق ذلك بعض الوقت اعتمادًا على مدى اتساع نطاق نظام لينكس الخاص بك تحت WSL 1، فقد يستغرق ذلك بعض الوقت. لسوء الحظ، لم تضع مايكروسوفت شريط تقدم أو معلومات حول الوقت المطلوب، لذا كن صبوراً.
التنظيف
هذا هو الجزء الأكثر أهمية للتعاون السليم بين WSL 2 و Docker. بعد الترقية إلى WSL 2، يحاول العديد من المستخدمين إجبار إصدارهم من Docker على التعاون دون أن يدركوا أن فريق Docker، خاصةً بالنسبة لـ WSL 2، قد أعد إصدارًا من شأنه أن يفعل كل شيء من أجلنا. هذا هو الإصدار الأخير من إصدار Docker Edge (الاسم التجريبي الخاص بهم) - "Docker Desktop WSL 2 backend". هذا الإصدار، 2.1.7.0، هو إصدار مصقول بشكل جيد ومرشح للإصدار المستقر القادم.
المستخدمون الذين لم يكن لديهم WSL 1 أو قاموا للتو بتثبيت إصدار جديد من WSL 2 محظوظون ويمكنهم التخطي على الفور إلى الفصل الأخير.
إذا لم تقم بتنظيف Docker (على الإطلاق أو بشكل صحيح) ولم تقم بتثبيت الإصدار المناسب من Docker لـ WSL 2، فقد تواجه بعض الأخطاء الشائعة، على سبيل المثال لا يمكن الاتصال بالبرنامج الخفي ل Docker على tcp://localhost:2375"، "هل البرنامج الخفي ل Docker قيد التشغيل
إلخ. في معظم الحالات، ستخسر الوقت إذا لم تكن تعلم أنه يجب عليك اتباع نهج جديد في محاولة حل هذه الأخطاء. وللقيام بذلك، يجب عليك أولاً إزالة Docker بالكامل من WSL وWindows، وهي خطوة غير واضحة.
المثال الأكثر شيوعًا للبقايا غير المحذوفة هو نهج Docker القديم لتعيين متغير البيئة DOCKER_HOST=tcp://المضيف المحلي:2375
في إطار WSL 1 للتعاون مع خيار Windows Docker Docker كشف البرنامج الخفي على tcp://المضيف المحلي:2375 بدون TLS
.
كيفية إزالة Docker تمامًا من WSL (Ubuntu)؟
- بما أن Docker الرسمي ل Docker المستندات قل:
sudo apt-get remove docker docker-engine docker.io docker.io containerd runc
بالتأكيد، يمكنك أن تضيف إلى هذه القائمة دوكر-سي
و docker-ce-cli
.
- حدد جميع حزم docker التي لديك مع
dpkg -l | grep -i docker
وإزالتها إذا كانت لا تزال موجودة.
- قم بإزالة جميع المخلفات:
sudo rm -rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- هذه الخطوة للمستخدمين المتقدمين، لذا كن حذراً. ربما لا تحتاج إلى القيام بها.
اعثر على الكل عامل الإرساء
تكرار الكلمات وحذف الكلمات التي أنت متأكد منها.
sudo find find / -اسم "*docker*"
- تحقق من محتوى جميع الملفات أدناه لمعرفة
عامل الإرساء
الأحداث مثل متغير البيئة على سبيل المثال DOCKER_HOST=tcp://المضيف المحلي:2375
.
يمكنك تحرير هذه الملفات باستخدام محرر Nano, نانو ~/.bashrc
أو فيجوال ستوديو كود, الرمز ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.الملف الشخصي
/etc/bash.bash.bashrc
/etc/profile
كيفية إزالة Docker تماماً من ويندوز؟
- إلغاء التثبيت بالطريقة العادية مع Windows
التطبيقات والميزات
اللوحة.
- قم بإزالة الكل أدناه إذا كان موجوداً:
C:ملفات البرنامجDocker
C:ProgramDataDockerDesktop
C:المستخدمون[USERNAME].docker
C:المستخدمون[USERNAME]AppDataLocalDocker
C:المستخدمون[USERNAME]AppDataRoamingDocker
C:المستخدمون[USERNAME]AppDataRoamingDockerDocker سطح المكتب
ما التالي؟
قم بتثبيت أحدث إصدار من Docker Desktop Edge من هنا واتبع الخطوات من الموقع الرسمي المستندات. يتعلق الأمر حقاً ببضع نقرات.
إذا سار كل شيء على ما يرام، يجب أن يكون لديك مخرجاتك من wsl -l -v
مثل هذا
اسم الحالة الإصدار
Ubuntu-18.04 قيد التشغيل 2
docker-desktop قيد التشغيل 2
docker-desktop-desktop-data قيد التشغيل 2
هذا كل ما في الأمر. لقد أنشأ Docker حاويات WSL الخاصة به دوكر-ديسك توب
و docker-desktop-data
. قد تكون بعض البرامج التعليمية أو النصائح المتاحة مربكة لأن هذا الوقت يجب عدم تثبيت أو تهيئة أي شيء متعلق بـ Docker ضمن توزيعة WSL Linux الخاصة بك. من المهم جداً أن تتذكر. بعد التنظيف، يجب أن تعمل بشكل جيد على الفور.
بالإضافة إلى ذلك..
يمكن أن يكون إعداد WSL 2 مع Docker عملية غير مؤلمة من خلال بضع خطوات بسيطة. ابدأ بتحديث قوائم الحزمة باستخدام الأمر "sudo apt-get update" للتأكد من حصولك على أحدث معلومات الإصدار. قم بحل أي تبعيات مفقودة باستخدام "sudo apt-get install -y build-essential" للحصول على تجربة تثبيت سلسة. التثبيت محرك Docker بـ "sudo apt-get install -y محرك قفص الاتهام" لإنشاء الحاويات وتشغيلها وإدارتها دون عناء. قم بتنفيذ "sudo docker run" متبوعًا باسم الصورة لتشغيل الحاويات. للحفاظ على تحسين بيئتك، قم بتشغيل "sudo docker system prune" بشكل دوري لإزالة الحاويات غير المستخدمة وتحرير مساحة القرص. من خلال هذه الخطوات، يمكنك الاستمتاع بالتكامل السلس بين WSL 2 وDocker من أجل استخدام الحاويات بكفاءة في سير عمل التطوير لديك.