
إذا أتيت من البرمجة أو الحوسبة الكلاسيكية والآن، وأنت تواجه صعوبة مع Homelabs وDocker وIcecast وAzuracast، فلا عجب أن رأسك يدور. فبين المنافذ وعناوين IP وSSL وأنظمة Windows وLinux والحاويات، يبدو أنك بحاجة إلى شهادة جامعية كاملة لمجرد إعداد خادم راديو بسيط.
والخبر السار هو أنه بمجرد أن تفهم ما هي الحاويات بالضبط في نظام التشغيل ويندوز؟كيف تختلف عن الآلات الافتراضية وفي أي الحالات تكون مفيدة - كل شيء يبدأ بالوضوح. يمكنك تشغيل عدة تطبيقات على نفس المنفذ (يبدو الأمر نفسه من الخارج)، كل منها في حاوية خاصة به، مع شهادات SSL فعّالة، ودون الحاجة إلى ملء منزلك بأجهزة Raspberry Pi.
ما هو الحاوية (بالمعنى الحقيقي) ولماذا لا تُعتبر آلة افتراضية؟
حاوية البرامج هي، في الأساس، عبوة معزولة وخفيفة الوزن حيث يتم تجميع التطبيق مع جميع مكوناته اللازمة لتشغيله: المكتبات، وبيئة التشغيل، والإعدادات، وجزء من نظام التشغيل في وضع المستخدم. تعمل هذه الحزمة فوق نواة نظام التشغيل المضيف، بدلاً من تضمين نظام تشغيل كامل بداخلها.
أما في الآلة الافتراضية، فلديك نظام تشغيل كامل للضيوف مع نواة وبرامج تشغيل وخدمات خاصة بها، تعمل على منصة افتراضية مثل Hyper-V أو VMware أو VirtualBox. تعتقد كل آلة افتراضية أنها تمتلك مكوناتها المادية الخاصة: وحدات معالجة مركزية افتراضية، وذاكرة وصول عشوائي، وأقراص تخزين، وبطاقات شبكة، وما إلى ذلك. يوفر هذا عزلاً قوياً للغاية، ولكنه يستهلك أيضاً موارد أكثر ويستغرق وقتاً أطول للتشغيل.
في حالة الحاويات، يكون نظام التشغيل المضيف (على سبيل المثال) ويندوز سيرفر 2019 أو 2022تتشارك توزيعة لينكس (أو توزيعة لينكس) نواة نظام التشغيل مع جميع الحاويات. ترى كل حاوية نظام ملفات افتراضي، ومساحة عمليات خاصة بها، وتكوين شبكة منطقي خاص بها، ومع ذلك، في الأساس، كل شيء يعمل من خلال نفس النواة.
إن حيلة مشاركة النواة تجعل الحاوية أكثر بكثير أخف من جهاز افتراضييستهلك مساحة تخزين أقل، ويتطلب ذاكرة أقل، ويتم تشغيله في ثوانٍ (أو أقل). لهذا السبب يمكنك تشغيل عشرات أو مئات الحاويات، بينما كان بإمكانك سابقًا إدارة عدد قليل فقط من الأجهزة الافتراضية.
باختصار، بينما الآلات الافتراضية محاكاة الأجهزة ويقومون ببناء نظام تشغيل كامل فوقه، أي الحاويات. محاكاة نظام التشغيل وهم يعزلون التطبيق وبيئة المستخدم الخاصة به فقط.
نظام الحاويات في ويندوز: ما تقدمه مايكروسوفت
تستثمر مايكروسوفت بكثافة في تقنية الحاويات منذ سنوات، سواء لـ ويندوز ولينكسلم يتوقف الأمر عند "Docker يعمل على نظام التشغيل Windows وهذا كل شيء"، بل قام ببناء نظام بيئي كامل حوله: صور رسمية، وتكامل مع Visual Studio، ودعم في Azure وأدوات التنسيق.
أما فيما يتعلق بالتنمية المحلية، فيمكنك استخدام تطبيق Docker Desktop على نظام التشغيل Windows 10/11 لتشغيل حاويات ويندوز ولينكس على جهاز الكمبيوتر الخاص بك. يستفيد Docker Desktop من وظائف الحاويات المدمجة في ويندوز، وعند الحاجة، يستخدم جهازًا افتراضيًا صغيرًا لحاويات لينكس أو في WSL2لكن كل ذلك واضح لك.
إذا كنت تعمل في بيئة خادم، ويندوز سيرفر 2016، 2019، 2022 و2025 تتيح لك هذه التقنية تشغيل الحاويات بشكل أصلي. وباستخدامها، يمكنك بناء حلول متكاملة: تطبيقات .NET الكلاسيكية، وخدمات الواجهة الخلفية، وواجهات برمجة التطبيقات، والخدمات المصغرة، وما إلى ذلك، مُعبأة في صور ويتم نشرها كحاويات.
لإنجاز دورة التطوير الكاملة، يتكامل كل من Visual Studio وVisual Studio Code دعم أصلي لـ DockerDocker Compose وKubernetes وHelm. يتيح لك هذا تجميع الصور وتصحيح أخطائها وإنشائها ونشرها في سجل ببضع نقرات أو مباشرةً من المحرر، دون الحاجة إلى التبديل المستمر بين الأدوات. إذا كنت ترغب في مقارنة البيئات والأدوات، فراجع هذا الدليل على بيئة التطوير المتكاملة وأدوات التطوير.
يمكنك تحميل الصور التي تقوم بإنشائها إلى دوكر هاب (إذا لم يكن يهمك ما إذا كانت عامة) أو سجل حاوية Azure (ACR) إذا كنت ترغب في إنشاء سجل خاص داخل مؤسستك أو بيئة الحوسبة السحابية، فيمكن لبيئات التطوير والاختبار والإنتاج الخاصة بك سحب الصور من هناك ونشرها حسب الحاجة.
كيف تعمل حاوية ويندوز فعلياً
تعتمد حاوية ويندوز على نواة النظام المضيفلكن الاتصال به ليس عشوائياً. يمنحه النظام "رؤية" معزولة للموارد: نظام الملفات الافتراضي، وإدخالات التسجيل الخاصة به، والعمليات، والشبكة، وإذا رغبت، وحدة تخزين دائمة مثبتة خارجياً.
يتم تجميع الملفات والمكتبات التي يحتاجها التطبيق في وضع المستخدم في حزمة واحدة. الصورة الأساسيةفوق تلك الصورة الأساسية، يتم تكديس طبقات إضافية: تبعيات محددة، وتكوينات، ورمز التطبيق الخاص بك ... نتيجة تكديس هذه الطبقات هي صورة الحاوية النهائية، والتي ستكون القالب الذي تبدأ منه حاوية واحدة أو أكثر.
نقطة رئيسية واحدة: الصور غير قابلة للتغييرعند إنشاء حاوية من صورة، تُحفظ التغييرات التي يُجريها تطبيقك (الملفات المؤقتة، والسجلات، وما إلى ذلك) في طبقة قابلة للكتابة في الأعلى. إذا حذفت الحاوية، فستُفقد هذه الطبقة ما لم تكن قد قمت بتوصيل وحدة تخزين دائمة، مثل قرص Azure أو مشاركة ملفات Azure.
يتيح لك هذا النظام متعدد الطبقات ما يلي: إعادة استخدام الصور بين التطبيقات. على سبيل المثال، ينشر فريق .NET صور .NET Core مُجهزة مسبقًا (مبنية على Nano Server)، وكل ما عليك فعله هو إضافة التعليمات البرمجية والتكوين. هذا يوفر عليك عناء تثبيت بيئات التشغيل في كل مرة، ويتم تنزيل الطبقات المشتركة مرة واحدة فقط.
توجد طريقتان لعزل العمليات في نظام التشغيل ويندوز: عزل العمليةحيث تتشارك الحاويات نواة النظام المضيف مباشرةً، و العزل باستخدام Hyper-Vحيث يعمل كل حاوية داخل جهاز افتراضي مصغر بنواة خاصة به. الأول أخف وزنًا، بينما يوفر الثاني أمانًا وتوافقًا إضافيين.
صور نظام التشغيل Windows الأساسية وأنواع الحاويات
تقدم مايكروسوفت العديد من صور القاعدة الرسمية صور ويندوز التي يمكنك استخدامها لإنشاء صورك المخصصة. كل صورة مصممة لسيناريوهات وأحجام وتوافقات مختلفة.
تتضمن صورة "ويندوز" تقريبًا جميع واجهات برمجة التطبيقات والخدمات الخاصة بالنظام (باستثناء بعض أدوار الخادم). إنه الأكثر اكتمالاً، وهو الأنسب إذا كنت بحاجة إلى أقصى قدر من التوافق مع التطبيقات التي تستخدم العديد من وظائف نظام التشغيل.
صورة "Windows Server" موجهة نحو سيناريوهات الخادم كما يتضمن مجموعة كاملة من واجهات برمجة تطبيقات وخدمات Windows Server. وهو مثالي لتطبيقات المؤسسات المصممة أصلاً لهذه البيئة.
"Windows Server Core" هو إصدار آخر ضوءيستخدم هذا النظام مجموعة فرعية من واجهات برمجة تطبيقات Windows Server والنسخة الكاملة من إطار عمل .NET. وهو يشمل معظم أدوار الخادم، ولكن ليس جميعها. ويُعدّ أساسًا جيدًا لتطبيقات الخادم النموذجية التي لا تتطلب واجهة رسومية كاملة.
"خادم نانو" هو الأكثر بسيط ومُحسَّنصُمم هذا البرنامج خصيصًا لبيئة .NET Core وأدوار الخادم المحددة. حجمه الصغير يجعله خيارًا مثاليًا للحاويات التي تتطلب سرعة تشغيل عالية واستهلاكًا منخفضًا للموارد.
بفضل الطبيعة متعددة الطبقات، ليس عليك دائمًا البدء بإحدى هذه الصور "الخالصة". يمكنك استخدام، على سبيل المثال، صورة رسمية لـ .NET Core أو ASP.NET Core وهذا يتضمن بالفعل بيئة التشغيل، ثم ما عليك سوى إضافة تطبيقك. هذا يقلل من أعمال التهيئة ويحسن أيضًا من التخزين المؤقت لـ Docker لأنك تشارك الطبقات مع صور أخرى.
حاويات للمطورين والمسؤولين
بالنسبة لفريق التطوير، تُعد الحاويات كنزًا ثمينًا: فهي تسمح تشغيل بيئات متطابقة إلى مرحلة الإنتاج في غضون ثوانٍ، دون إفساد نظام تشغيل الكمبيوتر المحمول ودون الخوض في نزاعات حول إصدارات المكتبات أو التبعيات.
بدلاً من العبارة المعتادة "يعمل على جهازي"، يقوم المطور بتشغيل حاوية بنفس الصورة الموجودة على خادم الإنتاج. تتضمن هذه الصورة النسخ الدقيقة من أوقات التشغيل والأطر والتكوين التي يحتاجها التطبيق، تختفي العديد من مشاكل "هذا الملف DLL مختلف هنا" أو "إصدار Java لا يتطابق".
كما أن الحاويات تسهل الأمر العمل التعاونيمشاركة بيئة العمل سهلة للغاية، إذ يكفي تمرير ملف Dockerfile أو اسم صورة السجل. يمكن لأي عضو في الفريق تشغيل الخدمة نفسها في ثوانٍ، دون الحاجة إلى اتباع أدلة تثبيت مطولة.
بالنسبة لمتخصصي تكنولوجيا المعلومات ومديري الأنظمة، تتيح لك الحاويات إنشاء بنى تحتية موحدة لأغراض التطوير، وضمان الجودة، والإنتاج. يتم تعريف كل بيئة بنفس الصور وملفات التنسيق، مما يقلل من المفاجآت وأخطاء التكوين اليدوي.
بالإضافة إلى ذلك، يمكنك استخدام الوضع التفاعلي للحاويات لتشغيل، على سبيل المثال، إصدارات متعددة من نفس أداة سطر الأوامر على نفس الخادم دون حدوث تعارضات. هذا مفيد للغاية للاختبارات، وعمليات النقل، أو التوافق مع البرامج القديمة، ولمهام مثل إنشاء نصوص Bash في Windows.
الاختلافات الرئيسية بين حاويات ويندوز ولينكس
على الرغم من التشابه المفاهيمي، توجد اختلافات جوهرية بين حاويات ويندوز ولينكس. فكلاهما يشتركان في نواة النظام المضيف، لكنها ليست النواة نفسها، كما أنها لا توفر واجهات برمجة التطبيقات نفسها، لذا لا يمكن لكل مضيف تشغيل سوى حاويات من نوع نظام التشغيل الخاص به.
على مضيف لينكس، يمكنك فقط تشغيل حاويات لينكس بشكل أصلي. على مضيف يعمل بنظام ويندوز، يمكنك تشغيل حاويات ويندوز بشكل أصلي، وباستخدام تقنيات مثل Hyper-V أو WSL2، يمكنك أيضًا تشغيل حاويات لينكس، على الرغم من وجود طبقة إضافية تعمل كوسيط في هذه الحالة.
يحتوي نظام التشغيل ويندوز على وضعين للعزل: العمليات و Hyper-V. ويشبه عزل العمليات إلى حد كبير عزل العمليات في نظام لينكس: تشارك الحاوية النواة بشكل مباشر كما أن العملية الرئيسية تُرى من قِبل المضيف كعملية عادية. إذا نظرت إلى قائمة العمليات باستخدام PowerShell، فسترى أن مُعرّف العملية (PID) الخاص بالحاوية يُطابق مُعرّف عملية على المضيف.
في وضع Hyper-V، يتم تشغيل كل حاوية داخل جهاز افتراضي صغير مع خاصيتها الخاصة. نواة معزولة خاصة بهامن الجهاز المضيف، لن ترى عملية التطبيق مباشرةً، بل عملية الجهاز الظاهري (على سبيل المثال، vmwp على نظام ويندوز). هذا أكثر أمانًا ويوفر توافقًا أكبر مع بعض التطبيقات، ولكنه يستهلك موارد أكثر قليلاً.
هناك أيضا قيود محددة في حاويات ويندوز: لا يمكن وضع كل شيء في حاوية. على سبيل المثال، لا تدعم الحاويات القياسية خدمات مثل Microsoft DTC (المعاملات الموزعة)، وتطبيقات العميل ذات الواجهات الرسومية التقليدية مثل Office، وبعض أدوار البنية التحتية مثل DHCP وDNS ووحدة تحكم المجال وNTP أو خوادم الطباعة والملفات.
مزايا استخدام الحاويات (أيضًا على نظام ويندوز)
قائمة مزايا الحاويات طويلة، وهي تنطبق على كل من لينكس وويندوز. أولها هو العزلكل حاوية هي وحدة مستقلة، مما يقلل من التعارضات بين التطبيقات ويحسن الأمان في حالة حدوث عطل أو اختراق.
والثاني هو قابليةتُغلّف الحاوية التطبيق مع تبعياته وإعداداته، مما يُتيح نقله بين أجهزة أو مراكز بيانات أو بيئات سحابية عامة مختلفة دون الحاجة إلى إعادة تهيئة كل شيء من الصفر. وينطبق هنا تمامًا مبدأ "البناء مرة واحدة، والتشغيل في أي مكان".
ميزة أخرى كبيرة هي كفاءة المواردبما أن العديد من الحاويات تشترك في نفس النواة، فإن استهلاك ذاكرة الوصول العشوائي (RAM) ومساحة القرص لكل نسخة يكون أقل بكثير من استهلاك الآلة الافتراضية. يمكنك تشغيل عدد أكبر من التطبيقات على نفس الخادم الفعلي، مما يؤدي إلى توفير في التكاليف.
في مجال التطوير، تُعدّ الحاويات مُسرّعاً قوياً: فهي تُنشئ بيئات قابلة للتكرار والتشغيل الآليتتوافق هذه الممارسات إلى حد كبير مع منهجية DevOps و CI/CD. يتيح لك تعريف الصورة في ملف Dockerfile والتحكم في إصداراتها باستخدام Git التحكم بدقة في ما يتم إنتاجه وكيفية بنائه.
علاوة على ذلك، تتحسن قابلية الصيانة: فتحديث التطبيق يتضمن بناء صورة جديدة ثم قم بنشره. إذا حدث خطأ ما، يمكنك الرجوع إلى الإصدار السابق دون أي مشاكل، ببساطة عن طريق تغيير التسمية أو النشر إلى صورة أخرى.
السلامة والمخاطر في الحاويات
يُعدّ أمن الحاويات مسألة بالغة الأهمية: فهو ليس مجرد مسألة "عزلها قليلاً" والانتهاء من الأمر. بل يجب حمايتها. السلسلة بأكملهابدءًا من الصورة الأساسية التي تستخدمها وصولًا إلى بيئة التشغيل التي يعمل عليها الحاوية. لتعزيز حماية المضيف، راجع الأدوات و تطبيقات لتحسين الأمان.
أحد أكثر المخاطر شيوعاً هو استخدام صور بها ثغرات أمنية أو حتى مع البرامج الضارة. لهذا السبب من المهم فحص الصور (سواء كانت صورك الخاصة أو صور جهات خارجية) باستخدام أدوات تحليل الثغرات الأمنية قبل تحميلها أو نشرها.
ومن المخاطر الأخرى التعرض لـ بيانات حساسةيمكن أن تتسبب كلمات المرور أو مفاتيح واجهة برمجة التطبيقات أو الشهادات المضمنة في الصورة أو في متغيرات البيئة غير الخاضعة للتحكم في تسريب معلومات حساسة إذا تم نشر الصورة على سجل عام أو إذا تمكن شخص ما من الوصول إلى النظام.
علينا أيضاً أن نعتني بـ تهيئة وقت التشغيلالامتيازات المفرطة، وتركيب وحدات التخزين المضيفة غير المقيدة، وإمكانيات الشبكة المفتوحة بشكل مفرط، وما إلى ذلك. يمكن استخدام حاوية تم تكوينها بشكل خاطئ كنقطة دخول لاختراق المضيف أو بقية البنية التحتية.
للتخفيف من كل هذا، يتم استخدام أدوات المسح الضوئي، وتحليل التعليمات البرمجية الثابتة والديناميكية، وسياسات أمن سلسلة التوريد، وضوابط منصة التنسيق (مثل Kubernetes) لتحديد حدود الموارد وسياسات الشبكة وقواعد الوصول.
الحاويات أم الآلات الافتراضية: متى يكون كل منهما مناسبًا؟
إن الاختيار بين الحاويات والآلات الافتراضية ليس مسألة بسيطة. فكلتا التقنيتين مكمل وفي الواقع، يتم دمجها في العديد من البيئات: الأجهزة الافتراضية كأساس والحاويات فوقها للتطبيقات.
تُعد الأجهزة الافتراضية الخيار المنطقي عندما تحتاج إلى عزلة تامة، تشغيل أنظمة تشغيل مختلفة (على سبيل المثال، لينكس على مضيف ويندوز بدون طبقة وسيطة محددة) أو عندما يتطلب التطبيق وصولاً منخفض المستوى للغاية إلى أجهزة أو برامج تشغيل محددة.
أما الحاويات، من ناحية أخرى، فتتألق عندما تكون الأولوية هي الكفاءة والسرعة والمرونةتبدأ هذه الأنظمة عملها في ثوانٍ، وتتوسع بسهولة، وتستهلك موارد أقل، مما يجعلها مثالية للخدمات المصغرة، وواجهات برمجة التطبيقات، وخوادم الويب، والتطبيقات الحديثة بشكل عام.
في بيئة الحوسبة السحابية، عادةً ما يقوم مزودو الخدمة بتشغيل الحاويات على أجهزة افتراضية تعمل في الخلفية. على سبيل المثال، تقوم خدمة Azure Kubernetes Service (AKS) بنشر العُقد على أجهزة Azure الافتراضية، وتعمل الحاويات على هذه الأجهزة. يمنحك هذا مرونة كلا النظامين: عزل قوي على مستوى العقدة وأداءً خفيفًا على مستوى التطبيق.
في كثير من الحالات، يكون القرار العملي هو المزج: استخدام الأجهزة الافتراضية لـ خدمات البنية التحتية الحيوية أو مرتبطة ارتباطًا وثيقًا بنظام التشغيل، وحاويات لطبقات التطبيقات التي تستفيد من قابلية التوسع وقابلية النقل.
التنسيق: لماذا تُعدّ Kubernetes وما شابهها ضرورية
طالما أن لديك حاويتين أو ثلاث فقط، فإن إدارتها يدويًا باستخدام `docker run` أو `docker stop` أو `docker logs` لا تُمثل مشكلة. تكمن المشكلة عندما يتكون تطبيقك من... عشرات أو مئات الحاوياتمع النسخ المتماثلة، وموازنة الأحمال، والتحديثات، والمراقبة.
وهنا يأتي دورهم أدوات تنسيق الحاويات مثل Kubernetes، الذي أصبح مكونًا أساسيًا لأي بنية تحتية حديثة قائمة على الحاويات. وتتمثل مهمته في إدارة الحاويات على نطاق واسع وفي بيئة الإنتاج.
تشمل الوظائف النموذجية للمنسق ما يلي: التنفيذ الجماعي من الحاويات، وتخصيص الحمل لعقد المجموعة، ومراقبة الحالة الصحية (إذا فشلت حاوية واحدة، تتولى أخرى المهمة)، والتحويل التلقائي بين العقد، وتوسيع نطاق الحمل التلقائي.
وهم مسؤولون أيضاً عن وظائف الشبكةإنهم يعرضون الخدمات للخارج، ويقدمون خدمات الاكتشاف الداخلية، وينفذون قواعد جدار الحماية بين الوحدات، وما إلى ذلك. كما أنهم ينسقون تحديثات التطبيقات (مثل عمليات النشر التدريجي) لمنع انقطاع الخدمة.
في عالم مايكروسوفت، يُعدّ Azure Kubernetes Service (AKS) المكوّن المركزي، حيث يُقدّم Kubernetes مُدارًا في Azure وفي بيئات محلية عبر Azure Arc أو Azure Stack. وهناك منصات أخرى مثل ريد هات OpenShift كما أنها توفر دعماً متزايداً لحاويات ويندوز، مما يوسع الخيارات المتاحة للبيئات الهجينة.
الحاويات في السحابة وكخدمة
قامت كبرى شركات الحوسبة السحابية بتجميع كتالوج كامل من خدمات الحاويات لذا لن تضطر إلى إدارة كل شيء من الصفر. على مستوى البنية التحتية (IaaS) والمنصة (PaaS)، يمكنك العثور على كل شيء بدءًا من سجلات الصور وحتى مجموعات Kubernetes المُدارة بالكامل.
تقدم أمازون لخدمات الويب خدمة أمازون ECS (خدمة الحاويات المرنة) وخدمة أمازون EKS (خدمة Kubernetes المرنة). وتُعد ECS إحدى هذه الخدمات. ملكية خاصة بشركة AWSمن ناحية أخرى، يوفر لك EKS نظام Kubernetes مُدارًا، وهو أمر مفيد للغاية إذا كنت ترغب في استخدام المعيار الصناعي الفعلي.
في مايكروسوفت أزور، بالإضافة إلى خدمة AKS، لديك سجل حاوية Azure لتخزين صور الحاويات الخاصة بك وإصدارها بشكل خاص. يتناسب هذا تمامًا مع مسارات التكامل المستمر/التسليم المستمر (CI/CD) القائمة على Azure DevOps أو GitHub Actions.
تُقدّم منصة جوجل السحابية محرك جوجل كوبيرنيتيس (GKE) كحلّها الرئيسي المُدار لكوبيرنيتيس. كما تتضمن محرك التطبيقات لتشغيل تطبيقات الويب والهواتف المحمولة دون الحاجة إلى إدارة الحاويات بشكل مباشر، على الرغم من وجود آليات مماثلة.
إلى جانب هؤلاء العمالقة، يقدم العديد من مزودي خدمات البنية التحتية كخدمة (IaaS) والمنصة كخدمة (PaaS) أشكالًا مختلفة من "الحاويات كخدمة". يكمن السر في التركيز على صورة لتطبيقك وفي تكوينها، ويتولى المزود مسؤولية العقد، وتصحيحات النظام، والتوسع، وحتى جزء من أمن البنية التحتية.
أدوات لإنشاء وإدارة الحاويات
إن الأداة الأكثر شيوعًا للعمل مع الحاويات هي، بلا شك، عامل في حوض السفنقدمت Docker تنسيق صورة قياسي، ووقت تشغيل، ونظام بيئي حوله، مما سهّل بشكل كبير اعتماد الحاويات، حتى من قبل الأشخاص الذين لم يكونوا خبراء في الأنظمة.
يُعدّ محرك Docker هو المكون المسؤول عن جوهر Docker. إنشاء وتشغيل وإدارة الحاويات على المضيف. علاوة على ذلك، فإن ملف Dockerfile هو ملف نصي تصف فيه كيفية إنشاء صورتك: ما هي القاعدة التي يجب استخدامها، وما هي الحزم التي يجب تثبيتها، وما هي المنافذ التي يجب كشفها، وما هو الأمر الذي يجب تشغيله عند بدء التشغيل.
صورة الحاوية الناتجة عبارة عن ملف منطقي يحتوي على جميع المكونات الضرورية للتطبيق: الكود، وبيئة التشغيل، والتبعيات، وجزء من نظام التشغيل. من هذه الصورة، يمكنك تشغيل حاوية واحدة أو أكثر، وهي النسخ الحية التي تعمل على المضيف.
لمشاركة الصور وتوزيعها، يعمل Docker Hub كـ السجل العام ضخمة، تضم آلاف الصور الرسمية والمجتمعية. غالباً ما تدمجها المنظمات مع سجلات خاصة، مثل سجلات الصور المعتمدة أو السجلات المستضافة ذاتياً، لتحسين التحكم في ما يتم نشره في بيئة الإنتاج.
إلى جانب Docker و Kubernetes، ظهرت أدوات أخرى: Podman (بدون خدمة خلفية ومتوافق مع Docker CLI)، و containerd (وقت التشغيل الذي يستخدمه Docker في الأساس)، و OpenShift كمنصة مؤسسية تعتمد على Kubernetes، و Nomad من HashiCorp لتنسيق أحمال العمل، و Docker Swarm كمنسق أبسط، وحلول مثل LXD أو Vagrant التي تغطي السيناريوهات ذات الصلة.
تطبيقات عملية: من نتفليكس إلى مختبرك المنزلي
لا تقتصر حاويات الشحن على الشركات الكبيرة فقط. فعلى الصعيد العالمي، تستخدمها شركات مثل Netflix يستخدمونها لتوسيع نطاق منصة البث الخاصة بهم، وتستفيد منها بنوك مثل جي بي مورغان تشيس لخدمات الخدمات المصرفية عبر الإنترنت، وتطبقها مستشفيات مثل مايو كلينك في أنظمة إدارة المرضى.
في قطاع التعليم، تستخدم جامعات مثل جامعة هارفارد حاويات الشحن لـ منصات التعلم عبر الإنترنتضمان بيئات متسقة للطلاب المنتشرين في جميع أنحاء العالم. وفي الإدارة العامة، حتى وكالات مثل وزارة الدفاع الأمريكية تستخدم الحاويات في تطبيقات الأمن القومي.
لكن بالعودة إلى الواقع، في مختبر منزلي أو مشروع شخصي، تتيح لك الحاويات إعداد خدمات مثل آيسكاست، أزوراكاست، خوادم الويب، قواعد البيانات، أو لوحات المراقبة على جهاز واحد، بدون منافذ متداخلة أو تبعيات.
بدلاً من تخصيص جهاز Raspberry Pi لكل خدمة، يمكنك إعداد عدة حاويات على نفس المضيف واستخدام وكيل عكسي (مثل Nginx أو Traefik المعبأ في حاويات) يستقبل حركة مرور HTTPS على المنفذ 443 ويوزعها داخليًا على خدماتك المختلفة بناءً على المجال أو المسار.
فيما يتعلق ببروتوكول SSL، فإن النقطة الأساسية هي فهم أن ينتهي التشفير عند نقطة معينة في سلسلة العمليات: قد يكون ذلك في الحاوية التي تُشغّل الخدمة أو في خادم وكيل عكسي أمامها. في كلتا الحالتين، ترى الحاوية حركة مرور HTTP "عادية" على منفذها الداخلي، على الرغم من أن كل شيء من الخارج مُشفّر.
على الشبكة، كل حاوية لها خاصتها عنوان IP داخلي ضمن شبكة Docker ومنفذ داخلي. من الخارج، يُعلن المضيف عن منفذ واحد أو أكثر ويربطها بالمنفذ الداخلي للحاوية. وهذا يُفسر سبب إمكانية وجود حاويات متعددة تستمع إلى نفس المنفذ الداخلي 80، بينما على المضيف، لا يتم فتح سوى المنافذ 8080 و8081 و8082، على سبيل المثال، لكل حاوية.
في هذا السياق، تُعدّ الحاويات في نظام التشغيل ويندوز خيارًا منطقيًا للغاية عندما تريد استفد من جهاز ويندوز الحالي الخاص بك (الحاسوب المحمول، الحاسوب المكتبي، الخادم) لاستضافة خدمات متعددة دون الحاجة إلى إعداد مجموعة كبيرة من الأجهزة المادية، والحفاظ على النظام والعزل والإدارة البسيطة نسبيًا.
في النهاية، إن فهم كيفية عمل الحاويات في نظام التشغيل ويندوز، ودور الصور الأساسية، وكيفية تكاملها مع الشبكة، ومزاياها مقارنة بالأجهزة الافتراضية، يسمح لك باتخاذ قرارات أكثر ذكاءً: بدءًا من اختيار ما إذا كان تطبيق .NET التالي الخاص بك سيتم وضعه في حاوية أو تشغيله في جهاز افتراضي، وصولاً إلى معرفة كيفية إعداد Icecast مع SSL على جهاز ThinkPad الخاص بك دون استهلاك المنافذ أو الموارد.
