حاويات ويندوز. من Hello World إلى Kubernetes. الجزء الأول ، تمهيدية



عندما أتحدث مع مهندسي Linux وأطلعهم على مشكلات مجموعة Kubernetes على نظام Windows ، فإنهم ينظرون إلي بشكل مثير للريبة. البعض لا يعتقد حتى أن هذا مشروع . حاويات ويندوز ليست شائعة وفي الطلب كما في لينكس. لكنني أعتقد أن الأمر يستحق الحديث عن هذا الموضوع ، إذا كان ذلك فقط لفهم المفهوم العام والاختلافات الرئيسية بين حاويات Windows و Linux. المدخل الأول سأذهب إلى اللوحة القماشية بفرشاة عريضة ، وبعد ذلك ، في المشاركات اللاحقة ، سأحاول الخوض تدريجياً في الفروق الدقيقة.

حاويات ويندوز


حسب هذا المقال:
يقوم الكثير من مطوري .NET أو SQL Server بتطوير المرفقين الخاصة بهم ويحسدون زملاءهم في نظام Linux.

في الواقع ، كانت الحاويات على ويندوز غريبة حتى وقت قريب. وأسوأ ما في الأمر هو أنه كان يتعين جمع الوثائق في فتات ، على كل مورد ، سواء كان موقع Docker أو موقع Microsoft الرسمي ، وتم تقديم كل شيء في نموذج نظرة عامة دون وصف "كيف ولماذا" ، وبعد مرور شهر أو شهرين أصبحت المعلومات الحالية قديمة. وليس هناك شيء خارق في هذا - الحاويات والتقنيات المرتبطة بها تتطور بسرعة غير واقعية.

في الوقت الحالي ، كل شيء أفضل مع الوثائق والانغماس في عالم الحاويات لنظام التشغيل Windows ، ما عليك سوى قراءة الوثائق الرسمية من Microsoft ومراقبة تغييراتها. ومن المثير للاهتمام ، أن الوثائق مكتوبة جيدًا وباللغة الروسية ، على الرغم من أنه من خلال دراسة متعمقة ، لا يمكنك تجنب النقر فوق ارتباطات إلى موارد مختلفة مثل https://www.docker.com/ أو https://kubernetes.io/ حيث يتم كتابة كل شيء باللغة القديمة الإنجليزية جيدة.

الآن يمكن العثور على الإجابات على أي أسئلة في الوثائق الرسمية ، ولكن هناك بعض الفروق الدقيقة التي هي معروفة مقدما. ربما يكون هذا مفيدًا لك ويوفر الوقت عند الانغماس في تقنية الحاوية تحت علامة Microsoft.

لا يمكنك تشغيل حاويات Windows على Linux و Windows *


تجعل تقنية الحاوية من السهل التعامل مع البيئة بفضل صور التطبيقات المعاد تشكيلها. يشبه Apple Appstore أو Google Play ، ولكن فقط للمهندسين والمطورين. كما هو الحال في متاجر تطبيقات الأجهزة المحمولة ، لا يمكنك وضع التطبيق من Google Play على نظام التشغيل iOS. لذلك على مضيف Docker مع نظام التشغيل Linux ، لا يمكنك بدء تشغيل الحاوية بنظام التشغيل Windows. يكون العكس صحيحًا أيضًا ، على الرغم من بعض "buts" ، لأن مضيف Docker مع Windows لا يزال بإمكانه تزويد Linux ببيئة لتشغيل الحاويات.

أيضًا ، لا يمكنك بدء حاوية Windows في بيئة Windows دون التأكد من أن إصدارات نظام التشغيل متوافقة. عند العمل مع حاويات من Microsoft ، سيكون عليك إلقاء نظرة على توافق إصدار حاويات Windows وفتح هذا المستند بشكل دوري.

الحديث عن الإصدار - قررت Microsoft مع ظهور الحاويات إصدار إصدارات نصف سنوية جديدة من Windows نصف سنوي. هذه إصدارات مثل windows server 1703، 1709، 1803، 1809، 1903. تشير الأرقام إلى سنة وشهر الإصدار ، وهي مدعومة لمدة 18 شهرًا. الأولان في حالة سلام بالفعل وهما في نهاية الخدمة. بالإضافة إلى ذلك ، هناك إصدارات LTS مثل Windows Server 2016 و Windows Server 2019. قائمة الإصدارات .

لذلك ، إذا قمت بجمع الحاوية على مضيف بإصدار من Windows 1803 ، فيمكنك فقط تشغيل هذه الحاوية على مضيفين مع Windows 1803. وبالتالي ، من أجل عدم إعادة إنشاء الحاوية نفسها في كل مرة ، سيتعين عليك استخدام إصدار LTS من Windows ، والذي بسرعات تطوير التكنولوجيا الحديثة ليس له ما يبرره دائما. أو ، مع ذلك ، فكر في الإصدار وما زلت تقوم بإعادة تجميع الحاويات باستمرار باتباع برنامج خطوة بخطوة للنصف السنوي.

أحدث علامة في حاويات Dokerfile for Windows غير موجودة دائمًا ويتم إهمالها بشكل عام. بطريقة جيدة ، تحتاج دائمًا إلى معرفة ماهية إصدار Windows لديك وإجراء التغييرات المناسبة على Dockerfile.
الحاويات هي جزء من نهج البنية التحتية كنهج. من الضروري إعادة تجميع الحاويات باستمرار ، فهي ليست بسيطة وممتعة فحسب ، ولكن هذا هو السحر الرئيسي ، الذي يسمح للتطبيقات بالعمل دائمًا على البرامج الجديدة والمحسّنة. ولكن في حالتنا ، نواجه بعض القيود: لن يعمل الأمر على الاحتفاظ بملف Dockerfile عالمي لجميع أنظمة Windows. يجب أن يؤخذ هذا في الاعتبار.

كل ما سبق صحيح بالنسبة للحاويات التي تعمل في وضع عزل العملية. في وضع العزل Hyper-V ، يتم تطبيق التوافق مع الإصدارات السابقة - يمكنك تشغيل جميع الحاويات المبنية على الإصدارات الحالية والسابقة. بشكل عام ، باستخدام Hyper-V ، يمكنك أيضًا تشغيل حاويات Linux على مضيف Windows. لكن هذا الوضع يدعم حتى الآن عددًا أقل من الأشياء الجيدة ، وهو مجرد نقص في Kubernetes.

الفرق بين عزل العملية وعزل Hyper-V هو موضوع مقالة منفصلة. في الوقت الحالي ، أقول فقط إن السيناريوهات التي تحتوي على عزل Hyper-V ليست واضحة تمامًا بالنسبة لي ، وبشكل افتراضي ، يستخدم Windows عزل العملية.

آخر الصداع هو العثور على الإصدار الصحيح من الصور على Docker Hub. بعض الصور مفقودة بشكل عام لنظام Windows. على سبيل المثال ، لن تجد البنية الرسمية لـ Nginx و MySQL و Nodejs ، بالإضافة إلى مئات التطبيقات الأخرى لنظام التشغيل Windows ، وعليك أن تجمع الحاويات بنفسك أو تستخدم الحاويات التي تم جمعها وتوفيرها من قبل أفراد المجتمع.

ويندوز يكلف المال.

لا تنس أن ويندوز لا يزال شيء مدفوع. على سبيل المثال ، تتوفر إصدارات نصف سنوية من خلال اشتراك Visual Studio أو مع ضمان البرنامج في اتفاقية ترخيص Microsoft الحالية. الارتباط.

لكن لدى Microsoft عددًا كبيرًا من الطرق للحصول على أموال مجانًا. هذا هو برنامج BizSpark وجميع أنواع الإصدارات التجريبية من Windows Server 2019 لمدة 180 يومًا وما إلى ذلك.

حاويات ويندوز ليست خفيفة الوزن.

من المقبول عمومًا أن تكون الحاويات خفيفة الوزن ، ولكن الحقيقة بالنسبة لنظام Linux ليست صحيحة دائمًا لنظام Windows. الغالبية العظمى من حاويات Windows ، للوهلة الأولى ، تزن بشكل كبير. وللوهلة الثانية لا يتغير الانطباع. على سبيل المثال ، aspnet: 4.8 صورة تزن حوالي 7.5 جيجابايت.



حتى إذا قمت باستضافة الصور الأساسية في مستودع محلي ، فإن التحميل الأولي للصورة إلى المضيف سيستغرق بعض الوقت ، ناهيك عن المستودعات البعيدة مثل Docker Hub.

نعم ، يمكنك استخدام Windows Nano Server خفيف الوزن في بعض السيناريوهات ، ولكن للأسف ، هناك مجموعة من القيود. وحتى أكثر من ذلك ، فأنت لست في الطريق مع Windows Nano Server إذا كنت تعمل على تطوير .Net Framework.

لإدارة ، تحتاج إلى معرفة CMD و Powershell جيدا.

على الأرجح سيكون عليك العمل مع الإصدار الأساسي من Windows Server على مضيفي Docker. يحتوي Windows Server على مجموعة كبيرة من إمكانيات الإدارة عن بُعد. النهج العام هو أن وجود خادم ويندوز مع واجهة رسومية ، يمكنك توصيل جميع الأدوات الإضافية الرسومية إلى أي خادم أساسي.

لا يعمل هذا الأسلوب في سيناريوهات الحاوية ، على الرغم من أن الحاوية تحتوي على إصدار كامل من Windows Server. داخل حاوية Windows ، من الممكن نظريًا الاتصال عبر WMI ، لكن هذا ليس بهذه البساطة ، فقط لأن نظام التشغيل المضيف سيعترض حركة المرور هذه لنفسه. يمكن أن يكون هناك عدة مئات ومئات من الحاويات على مضيف ، وفي هذه الحالة ، فإن توجيه حركة المرور إلى الحاوية الصحيحة أمر كامل.

ستكون هناك حاجة إلى CMD و Powershell من أجل إدارة الحاويات والمضيف الذي تم تثبيت Docker عليه. أيضا ، معرفة هذه الأصداف ضرورية لكتابة Dockerfile ، حيث سيتم تنفيذ جميع تعليمات RUN في الأصداف المذكورة أعلاه.

تذكر جميع cmdlets بوويرشيل طويلة صعبة للغاية. هذه ليست موجزة باش الأوامر بالنسبة لك. على الرغم من أن معظم أوامر cmdlets لديها أسماء مستعارة واضحة لأي مهندس Linux. في بوويرشيل ، يمكنك استخدام:

rm  Remove-Item pwd  Get-Location. cat  Get-Content touch  New-Item etc. #     Linux    .  rm –rf  . #   Powershell   man      Get-Help <> 

من بين الأشياء المفيدة للغاية ، أن استخدام Powershell يمكنك تشغيل خادم ويب بسيط في حاوية لأغراض الاختبار. في Powershell ، يظهر كل شيء ككائنات. إذا كنت من مؤيدي OOP ، فسوف تقدر بسرعة فوائد هذه القشرة.

في الختام للمادة التمهيدية ، أود أن أقول إنني عن عمد لم أتناول مسألة التنسيق وإدارة المجموعات. يعمل Docker على نظام Windows على البحث عن التطبيقات وتنسيقها مثل Swarm و Kubernetes على Windows لا يدركان وظائفهما بشكل كامل.

أيضًا في الوقت الحالي ، إذا كنت ترغب في رفع مجموعة Docker ، فمن المحتمل أن تكون منصة متعددة. بمعنى ، سيكون لديك مضيف Linux واحد أو أكثر في الكتلة. على سبيل المثال ، بالنسبة إلى Kubernetes ، يجب أن تكون العقد الرئيسية على Linux. وفي Swarm ، هناك حاجة إلى حاويات Linux ، على سبيل المثال ، لتطبيق موازن على Nginx أو تشغيل تطبيقات نظام المجموعة الأخرى الشائعة المتوفرة فقط لنظام Linux.

ملاحظة: استخدام Windows في حاويات لديه مجموعة محدودة للغاية من البرامج النصية للاستخدام. ومع ذلك ، يمكن أن تكون هذه السيناريوهات مثمرة للغاية. بطبيعة الحال ، فإن أول ما يتبادر إلى الذهن هو تطبيقات الويب IIS ، ولكن تجربتي تظهر أن الخدمات القائمة على Windows وبعض الخدمات مثل MSMQ معزولة جيدًا في حاويات.

UPD. يوجد عدم دقة طفيفة في المقالة ؛ يمكنك إنشاء كتلة Docker على مضيفات Windows وحدها. علاوة على ذلك ، ليس هذا هو Swarm فقط ، ولكنه أيضًا منتج تم تطويره بواسطة Micrisoft لتنظيم مجموعة Service Fabric

UPD2. تتوفر حاويات الإرساء لنظام التشغيل Windows 10 فقط في وضع عزل Hyper-V وتستخدم الصور الأساسية بخلاف Windows Server.

Source: https://habr.com/ru/post/ar465057/


All Articles