هل أنت جديد على صور دوكر ويندوز؟ هل تعمل حاليًا في بيئة ويندوز وترغب في التعرف على عمليات بناء دوكر لصور الحاويات؟ لقد جئت إلى المكان الصحيح. أفضل طريقة لتعلم شيء جديد هي من خلال القيام به باستخدام أوامر docker build
و docker build "tag"
!
في هذا المقال، ستتعلم كيفية إنشاء أول صورة دوكر ويندوز خاصة بك من ملف Dockerfile باستخدام أمر docker build
.
لنبدأ!
فهم صور حاويات دوكر
لسنوات، كانت الطريقة الوحيدة لاختبار أو إجراء تطوير على أنظمة تشغيل متعددة (OS) هي وجود عدة أجهزة فيزيائية أو افتراضية مخصصة مع نسخة OS التي تفضلها. كانت هذه النهج يتطلب مزيدًا من الأجهزة والتكاليف الإضافية لتوفير أجهزة جديدة لكل تخصيص برمجي و OS.
ومع ذلك، في الوقت الحالي، نمت استخدام صور الحاويات دوكر جزئيًا بسبب شعبية بنية الخدمات المصغرة. ردًا على ارتفاع شعبية دوكر، بدأت مايكروسوفت في دعم صور دوكر علنًا لعدة منتجات رئيسية على صفحتها في موقع دوكر هاب. حتى أضافت دعمًا أصليًا لصور ويندوز كميزة منتج في ويندوز 10 وويندوز سيرفر 2016!
A Docker image is run on a container by using the Docker Engine. Docker images have many benefits such as portability (applicable to multiple environments and platforms), customizable, and highly scalable. As you can see below, unlike traditional virtual machines, the Docker engine runs on a layer between the host OS kernel and the isolated application services that are being containerized.

فهم بناء وصور دوكر
الأمر docker build
يمكن أن يستخدم لأتمتة إنشاء صورة الحاوية، اعتماد ممارسة DevOps للحاويات كشيفرة، ودمج التحاويات في دورة التطوير لمشاريعك. تعتبر ملفات الـ Dockerfile ملفات نصية تحتوي على تعليمات البناء المستخدمة بواسطة Docker لإنشاء صورة حاوية جديدة تستند إلى صورة موجودة بالفعل.
يمكن للمستخدم تحديد صورة الأساس وقائمة الأوامر التي ستتم تشغيلها عند نشر صورة الحاوية أو تشغيلها لأول مرة. في هذا المقال، ستتعلم كيفية إنشاء صورة Docker بنظام Windows باستخدام Dockerfile باستخدام حاوية Windows.
تحمل هذه العملية العديد من الفوائد على استخدام صورة حاوية جاهزة:
- يمكنك إعادة بناء صورة الحاوية لعدة إصدارات من نظام التشغيل Windows – وهذا رائع لاختبار تغييرات الشيفرة على منصات متعددة.
- ستكون لديك مزيد من السيطرة على ما يتم تثبيته في الحاوية. وهذا سيتيح لك الحفاظ على حجم الحاوية بأدنى حد.
- من أجل أسباب أمان، قد ترغب في فحص الحاوية لاكتشاف الثغرات وتطبيق تحسينات الأمان على صورة الأساس
المتطلبات والشروط الأساسية
هذا المقال هو دليل تعليمي حول كيفية بناء صورة Docker باستخدام Dockerfile. إذا كنت ترغب في متابعة، تأكد من وجود الشروط الأساسية التالية.
- تثبيت Docker for Windows. سأستخدم إصدار Docker Community Edition (CE) الإصدار 2.1.0.4 في بيئتي.
- الوصول إلى الإنترنت مطلوب لتنزيل صور Docker
- نظام التشغيل Windows 10+ (يتم استخدام الإصدار 1709 لهذا البرنامج التعليمي)
- تم تمكين التضمين الظاهري المتداخل
- 5 جيجابايت من المساحة الحرة على جهازك المحلي
- PowerShell 5.0+
- يستخدم هذا البرنامج التعليمي بيئة تطوير متكاملة Visual Studio Code IDE. ومع ذلك، لا تتردد في استخدام أي بيئة تطوير تفضلها.
ملاحظة: تأكد من تمكين تكوين حاويات Windows عند تثبيت Docker.
التحضير للعمل
سوف تحتاج أولاً إلى مجلد لتخزين جميع صور Docker والحاويات التي ستنشئها من تلك الصور. للقيام بذلك، افتح نافذة نصية Powershell أو cmd (ستستخدم PowerShell طوال هذه المقالة) وأنشئ دليلاً جديدًا يسمى C:\Containers.
بمجرد إنشاء المجلد، قم بالتبديل إلى هذا الدليل. هذا يضع الدليل الحالي للعمل في وحدة التحكم إلى C:\Containers لتحديد هذا الدليل كافتراضي لجميع عمليات التنزيل.
في هذا المقال، ستحصل على بداية سريعة. معظم الملفات اللازمة لإكمال هذا المشروع متاحة بالفعل. بمجرد إنشاء المجلد، قم بتنفيذ أمر Git pull لنسخ الملفات اللازمة لهذا المقال من مستودع Github التابع لـ TechSnips إلى المجلد C:\Containers. بمجرد الانتهاء، تحقق للتأكد من أن المجلد C:\Containers يبدو كما هو موضح أدناه.

تنزيل صورة IIS Windows Docker
أول مهمة تقوم بها هي تنزيل “قالب” أو صورة قاعدية. ستقوم لاحقًا ببناء صورة Docker الخاصة بك، ولكن أولاً، تحتاج إلى صورة للبدء. ستقوم بتنزيل آخر إصدارات صور IIS و Windows Server Core التي تُطلب لهذا البرنامج التعليمي. يمكن العثور على قائمة محدثة للصور على صفحة صور Docker hub الرسمية لـ Microsoft.
مراجعة صور Docker القاعدية الحالية
قبل تنزيل الصورة من مستودع الصور، دعنا نستعرض أولاً الصور القاعدية الحالية لديك على النظام المحلي. للقيام بذلك، قم بتشغيل نافذة PowerShell كمسؤول ثم اكتب docker images
. يُرجع هذا الأمر جميع الصور على النظام المحلي.
كما يمكنك أن ترى أدناه، الصور المتاحة فارغة في البداية.

تنزيل الصورة القاعدية
الآن حان الوقت لتنزيل صورة IIS الأساسية من Docker Hub. للقيام بذلك ، قم بتشغيل docker pull
كما هو موضح أدناه. قد يستغرق هذا العملية بعض الوقت للاكتمال اعتمادًا على سرعة الإنترنت الخاصة بك.

الآن قم بتشغيل docker images
ويجب أن يكون لديك أحدث صورة Microsoft Windows Core IIS متاحة لهذا البرنامج التعليمي.

فحص ملف Dockerfile
في خطوة سابقة ، قمت بتنزيل Dockerfile الحالي لهذا البرنامج التعليمي. دعونا نلقي نظرة الآن على ما يعنيه بالضبط.
افتح ملف C:\Containers\Container1\Dockerfile في محررك المفضل. يتم استخدام محتويات هذا Dockerfile لتحديد كيف سيتم تكوين صورة الحاوية أثناء وقت البناء.
يمكنك رؤية شرح لما يقوم به كل جزء من هذا الملف في التعليقات الداخلية.
بناء صورة Docker جديدة
لديك ملف Dockerfile جاهز للاستخدام وتم تنزيل صورة IIS الأساسية. الآن حان الوقت لبناء صورة Docker الجديدة باستخدام ملف Dockerfile الخاص بك.
لبناء صورة جديدة، استخدم الأمر docker build "tag"
. ينشئ هذا الأمر الصورة. في هذه المقالة، يمكنك أن ترى أيضًا أنك تستخدم الخيار -t **
الذي يحل محل جزء “tag”. يسمح لك هذا الخيار بإعطاء صورتك الجديدة اسم علامة ودية وأيضًا بالإشارة إلى ملف Dockerfile عن طريق تحديد مسار المجلد الذي يقع فيه.
يمكنك أن ترى في الأسفل مثالًا على ضمان أن وحدة التحكم موجودة في المجلد C:\Containers ثم بناء صورة جديدة من ملف Dockerfile في المجلد C:\Containers\Container1.
بمجرد البدء، يمكنك رؤية تقدم الأمر أثناء مرور كل تعليمة في ملف docker بشكل سطر بسطر:

بمجرد الانتهاء، يجب أن يكون لديك الآن صورة Docker جديدة!
الآن قم بتشغيل الأمر docker images
لعرض الصور المتاحة. يمكنك أن ترى في الأسفل مثالًا على الصورة container1 التي تم إنشاؤها.

ملاحظة: الأمر
docker build —help
هو معلمة مفيدة لعرض معلومات مفصلة حول الأمر docker الذي يتم تشغيله.
تشغيل حاوية Docker
في هذه النقطة، يجب أن يكون لديك صورة جديدة. حان الوقت لبدء حاوية باستخدام تلك الصورة. لإطلاق حاوية جديدة، استخدم الأمر docker run
.
الأمر docker run
سيقوم بإطلاق حاوية Docker جديدة بناءً على صورة container1 التي أنشأتها سابقًا. يمكنك رؤية مثال على ذلك أدناه.
لاحظ أن المعلمة -d
مستخدمة. هذا يخبر مُشغل Docker ببدء الصورة في الوضع المنفصل ثم الخروج عندما ينتهي العملية الرئيسية المستخدمة لتشغيل الحاوية.
عند اكتمال docker run
، يُرجع معرف الحاوية المنشأة. يقوم المثال أدناه بتخزين هذا المعرف في متغير $containerID
حتى نتمكن من الإشارة إليه بسهولة لاحقًا.

بمجرد إطلاق الحاوية، قم بتشغيل الأمر docker ps
الآن. يتيح لك هذا الأمر رؤية الحاويات التي تعمل حاليًا باستخدام كل صورة. لاحظ أدناه أن الصورة الجارية تم إنشاؤها تلقائيًا باسم مستعار (busy_habit في هذه الحالة). يُستخدم هذا الاسم البديل أحيانًا بدلاً من معرف الحاوية لإدارتها.

تشغيل الشفرة داخل حاوية Docker
A new container is built from a new image you just created. Let’s now start actually using that container to run code. Running code inside of a Docker container is done using the docker exec
command.
في هذا المثال، قم بتشغيل docker exec
لعرض إخراج PowerShell لأمر Get-ChildItem
في الحاوية باستخدام بنية الأمر أدناه. سيتأكد هذا من نجاح التعليمات في Dockerfile لإزالة ملفات IIS الافتراضية.
يمكنك رؤية أدناه أن الملف الوحيد الموجود هو index.html مما يعني أن الملفات الافتراضية تمت إزالتها.

الآن قم بتشغيل الأمر ipconfig
في الحاوية للحصول على عنوان IP المحلي لصورة الحاوية حتى تتمكن من محاولة الاتصال بموقع الويب IIS.
يمكنك أن ترى أدناه أن ipconfig
تم تشغيله في الحاوية تمامًا كما لو كنت تقوم بتشغيله على جهاز الكمبيوتر المحلي وقد قام بإرجاع جميع معلومات IP.

ipconfig
in a Docker containerفحص موقع IIS
الآن حان الوقت لكشف ثمار عملك! حان الوقت لمعرفة ما إذا كان خادم IIS الذي يعمل في حاوية Docker يقوم بتقديم صفحة index.html بشكل صحيح.
افتح متصفحًا وألصق عنوان IPv4 الذي تم العثور عليه عن طريق ipconfig
في شريط العنوان. إذا كان كل شيء على ما يرام ، يجب أن ترى رسالة Hello World!! مثل ما هو موضح أدناه.

مراجعة تاريخ Docker
تعتبر أمرًا مفيدًا عند العمل مع حاويات Docker هو أمر docker history
. على الرغم من أنه ليس ضرورياً بالضرورة لإنشاء صورة أو حاوية بحد ذاتها ، إلا أن أمر docker history
هو أمر مفيد يتيح لك مراجعة التغييرات التي تمت على صورة الحاوية.
يمكنك أن ترى أدناه ، أن docker history
يعيد كل نشاط Dockerfile وPowerShell الذي تم تنفيذه على الحاوية container1 التي كنت تعمل عليها.

docker history
تنظيف صور Docker الجارية
تُستخدم الخطوات أدناه لتنظيف جميع الحاويات المتوقفة التي تعمل على جهازك. ستقوم هذه الخطوات بتحرير مساحة القرص وموارد النظام.
قم بتشغيل أمر docker ps
لعرض قائمة الحاويات التي تعمل على النظام:

الآن قم بإيقاف تشغيل الحاويات التي تعمل باستخدام أمر docker stop
:

أخيرًا ، يمكنك إزالة الحاويات المتوقفة بشكل دائم باستخدام أمر docker system prune
.
