دوكر على ويندوز؟ ابدأ في التعلم الآن أو …!

إذا كنت جديدًا في عالم الحاويات و Docker وتعمل في الدرجة الأولى على نظام Windows، فستكون هناك مفاجأة لك. في هذا المقال، ستتعلم كيفية إعداد Docker على Windows 10 باستخدام Docker Desktop for Windows أو المعروف ببساطة باسم Docker Desktop في هذا المقال.

Docker Desktop هو محرك Docker وعميل إدارة يتم تجميعهما معًا لسهولة الاستخدام في Windows 10. في هذا المقال، ستقوم بتثبيت Docker Desktop ونشر أول حاوية لديك، ومشاركة البيانات بين جهاز الاستضافة والحاويات الخاصة بك.

المتطلبات الأساسية لتشغيل Docker على Windows

هذا مقال توجيه يظهر خطوات مختلفة في Docker Desktop لـ Docker على Windows. لمتابعة الخطوات، تأكد من توفر بعض المتطلبات الخاصة أولاً.

  • اتصال بالإنترنت لتنزيل أكثر من 800 ميجابايت من البيانات
  • نظام Windows 10 بنسخة 64 بت تعمل بإصدار Pro أو Enterprise أو Education بإصدار 1703 أو أحدث. هذا ضروري لتشغيل Hyper-V على Windows 10.
  • A CPU with SLAT (nested paging) compatibility. All AMD/Intel processors since approximately 2008 are SLAT compatible
  • ذاكرة وصول عشوائي (RAM) بحد أقل 4 جيجابايت
  • تقنية الاختزال الافتراضية في BIOS والمسماة أحيانًا بـ تقنية الاختزال الافتراضية أو VTx. يجب تمكين هذا وأن يظهر باسم تمكين في علامة الأداء في إدارة المهام كما هو موضح أدناه.
Enabled BIOS virtualization shown in Windows Task Manager

تنزيل وتثبيت Docker Desktop

أولًا ، تحتاج إلى تنزيل وتثبيت برنامج Docker Desktop لتشغيل Docker على نظام Windows. يتوفر Docker Desktop في نسختين؛ النسخة الثابتة والنسخة التجريبية.

النسخة الثابتة تصدر ربع سنويًا وتضمن تطبيقًا تم اختباره بالكامل. في هذه المقالة ، ستستخدم النسخة الثابتة.

تحذير: عند التثبيت ، سيقوم Docker Desktop بطلب تثبيت مدير الأجهزة الظاهري Hyper-V إذا لم يكن مثبتًا بالفعل. من خلال ذلك ، يمنع مدير الأجهزة الظاهري Hyper-V تشغيل أية أجهزة افتراضية من وضع المستخدم مثل VirtualBox و VMWare وما إلى ذلك. دعم Hyper-V لـ VirtualBox و VMWare محدود ولكنه قادم.

لديك أيضًا خيار تنزيل Docker Desktop مباشرة من Docker.com أو عبر مدير حزم Windows المسمى Chocolatey. دعنا نغطي كل طريقة بإيجاز.

من Docker.com

لتنزيل “دوكر ديسكتوب” مباشرة من docker.com، يمكنك الانتقال إلى صفحة المنتج، والتسجيل للحصول على حساب ثم تنزيله من هناك. يُفضل ذلك إذا كنت تنوي استخدام “دوكر” في الإنتاج عن طريق تسجيل حساب.

ومع ذلك، إذا كنت تختبر “دوكر” للمرة الأولى، يمكنك أيضًا تنزيله مباشرة وهذا أسهل بكثير.

بمجرد تنزيل الملف التنفيذي، قم بتشغيله واتبع التعليمات المقدمة وقبول جميع الإعدادات الافتراضية.

عندما يتم طرح السؤال عما إذا كنت تخطط لـ استخدام حاويات ويندوز بدلاً من حاويات لينكس، كما هو موضح أدناه، قم بـ عدم تمكين خانة الاختيار. ستكون تستخدم حاويات لينكس في هذه المقالة.

Installing Docker Desktop

بمجرد الانتهاء من التثبيت، أعد تشغيل الكمبيوتر.

اختيار الخيار لاستخدام حاويات ويندوز أو حاويات لينكس يخبر “دوكر” بتعيين الصور على نواة ويندوز أو نواة لينكس. يمكنك تغيير هذا الإعداد في أي وقت بعد التثبيت بالنقر بزر الماوس الأيمن على أيقونة “دوكر” في شريط النظام واختيار “التبديل إلى حاويات ويندوز” كما هو موضح أدناه.

Switching to Windows containers

استخدام “شوكولاتي”

الخيار الآخر لتنزيل وتثبيت Docker Desktop هو باستخدام Chocolatey. يقوم Chocolatey بتلقائية العديد من مهام التنزيل والتثبيت بالنيابة عنك. للقيام بذلك ، افتح وحدة تحكم سطر الأوامر (سواءً كانت cmd أو PowerShell) كمسؤول لتنزيل وتثبيت البرنامج في مرة واحدة عن طريق تشغيل الأمر التالي.

choco install docker-desktop

بمجرد الانتهاء ، أعد تشغيل Windows 10.

إذا كنت ترغب في تجربة الإصدار التجريبي في بعض الأحيان ، يمكنك تنزيل وتثبيت ذلك بتشغيل choco install docker-desktop --pre.

التحقق من تثبيت Docker Desktop

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

للتحقق من أن Docker Desktop يعمل بشكل صحيح ، افتح وحدة تحكم سطر الأوامر وقم بتشغيل الأمر docker. إذا كان التثبيت ناجحًا ، سترى مرجع أوامر Docker.

وأخيرًا ، دع Docker يقوم بتنزيل وتشغيل صورة حاوية تجريبية تسمى hello-world بتشغيل الأمر docker run hello-world. إذا كان كل شيء على ما يرام ، سترى إخراجًا مثلما هو موضح أدناه.

A successful test image run via Docker Desktop

تشغيل الأوامر في حاويات Docker

تم تثبيت Docker Desktop وتحققت من أن كل شيء على ما يرام؟ الآن ماذا؟ للبدء مع Docker على نظام Windows، فإن المهمة الشائعة لتنفيذها في حاوية Docker هي تشغيل الأوامر. من خلال الأمر docker run، يمكنك إرسال الأوامر من خلال المضيف (جهاز الكمبيوتر الخاص بك الذي يعمل بنظام Windows 10) مباشرةً إلى حاوية تعمل.

لتشغيل الأوامر في حاوية باستخدام docker run، ستقوم أولاً بتحديد اسم الصورة تليها الأمر. للبدء، قم بإخبار Docker بتشغيل الأمر hostname داخل حاوية تسمى alpine كما هو موضح أدناه.

> docker run alpine hostname
b74ff46601af

نظرًا لعدم وجود صورة Docker alpine على جهاز الكمبيوتر الخاص بك الآن، سيقوم Docker على نظام Windows بتنزيل الصورة الصغيرة من مستودع Docker Hub، ثم تشغيل حاوية من تلك الصورة، وإرسال الأمر مباشرةً إلى الحاوية وإيقاف تشغيلها في خطوة واحدة.

إذا كنت ترغب في الاحتفاظ بتشغيل الحاوية، يمكنك أيضًا استخدام المعامل -it. يُخبر هذا المعامل Docker بالاحتفاظ بالحاوية في “وضع تفاعلي”، مما يتركها تعمل في المقدمة بعد تنفيذ الأمر. سترى بعد ذلك أنه يتم تقديم موجه الأوامر مستعدة للاستخدام.

> docker run -it alpine sh
/ #

عند الانتهاء من استخدام المحطة، اكتب exit للعودة إلى Windows 10.

الوصول إلى الملفات من مضيف Docker في الحاويات

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

لإنشاء ربط، قم بإنشاء مجلد على محرك أقراص محلي. لهذا المثال، سأستخدم E:\ وسأسميه input. ثم سيتم إنشاء مستند نصي جديد يُسمى file.txt في المجلد. لا تتردد في استخدام أي مسار وملف ترغب فيه.

بمجرد أن يكون لديك المجلد الذي ترغب في مشاركته بين المضيف والحاوية، يحتاج Docker إلى تركيب المجلد باستخدام المعامل --mount. يتطلب المعامل --mount ثلاثة وسيطات؛ نوع تركيب، مسار مجلد المضيف المصدر ومسار مجلد الهدف. سيكون المسار الهدف رابطًا رمزيًا داخل الحاوية.

أدناه سترى مثالًا على تركيب المجلد E:\ بالكامل داخل مضيف Windows 10 ليظهر كمجلد /home/TEST داخل الحاوية Linux.

> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine

عند محاولتك لتركيب مجلد مضيف، سيطلب Docker Desktop إذنك لمشاركة هذا القرص مع حاويات Docker كما هو موضح أدناه.

Sharing a Docker drive

إذا قمت بإنشاء ملف file.txt في مجلد Windows 10 كما هو موضح سابقًا، قم بتشغيل cat /home/TEST/input/file.txt. سترى أن المحتويات معروضة.

الآن، احذف المجلد input الذي أنشأته للتو وقم بتشغيل أمر cat ... مرة أخرى. لاحظ أن الشاشة النصية الآن تبلغ أن الملف لم يعد موجوداً.

Working with files in Docker containers

تعيين منافذ الشبكة

مفهوم آخر مهم لمعرفته هو كيفية التعامل مع Docker على نظام Windows فيما يتعلق بالشبكات. لنلق نظرة سريعة على ما يلزم للوصول إلى خدمة ويب تعمل في حاوية من المضيف المحلي.

أولاً، قم بتشغيل صورة توضيحية ستقوم بتشغيل صفحة ويب توضيحية. قم بتنزيل وتشغيل صورة Docker المسماة dockersamples/static-site. ستستخدم docker container run للقيام بذلك.

الأمر التالي يقوم بأربع أفعال في وقت واحد:

  • يقوم بتنزيل صورة Docker من Docker Hub بعنوان static-site في “دليل” docker-samples
  • يبدأ نسخة حاوية من الصورة static-site بالتشغيل
  • يفصل الحاوية عن الطرفية الأمامية للنافذة النصية الفورية (—detach)
  • يجعل منافذ الشبكة الجارية للحاوية متاحة لمضيف Windows 10 (—publish-all)
docker container run --detach --publish-all dockersamples/static-site
## بناء على ذلك، إليك النحو البديل/المختصر الذي يقوم بنفس العمل:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site

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

Docker container ID returned from running a container

نشر منافذ الشبكة

منذ استخدام المعامل `--publish-all`، تم الآن تعيين منافذ المضيف المحلي على مكدس شبكة الحاوية. يمكنك استخدام الأمر الفرعي `docker ps` لسرد جميع الحاويات الجارية بما في ذلك المنافذ المخصصة لجميع الحاويات الجارية. في المثال أدناه، هناك حاوية واحدة تعمل تقوم بتعيين منفذ المضيف 32777 إلى منفذ الحاوية 80 ومنفذ المضيف 32776 إلى منفذ الحاوية 443.

Showing port mapping of Docker container

يقوم Docker على Windows بتعيين منافذ عشوائية للحاويات عند استخدام المعامل `--publish-all` ما لم يتم تحديدها صراحةً.

الآن، افتح متصفح ويب وانتقل إلى http://localhost:32777 أو المنفذ الذي عينه Docker ليتم تعيينه إلى المنفذ 80 كما يخرج بواسطة `docker ps`. إذا سارت الأمور على ما يرام، يجب أن ترى صفحة الويب أدناه تظهر.

Resulting webpage running in the Docker container

تغيير المنافذ المنشورة

لديك الآن حاوية Docker تعمل في Docker على Windows تقدم صفحة ويب بسيطة. تهانينا! ولكن الآن تحتاج إلى تحديد ربط منفذ محدد لا يعتمد على اختيار المنفذ العشوائي مع `--publish-all`. لا مشكلة. استخدم المعامل `-p`.

أولاً، أوقف تشغيل الحاوية الجارية بتحديد سلسلة فريدة من معرف الحاوية. يمكنك العثور على معرف الحاوية هذا بتشغيل `docker ps`. بمجرد معرفة معرف الحاوية، أوقف الحاوية وابدأ واحدة جديدة مع تعيين Docker لتعيين منفذ محدد للنشر.

الـبنية لتحديد منفذ هي <منفذ خارجي>:<منفذ الحاوية>. لكل منفذ ترغب في نشره، استخدم مفتاح --publish أو -p مع أرقام المنافذ الخارجية والحاوية كما هو موضح أدناه.

> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site

عند تحديد معرف الحاوية، يتعين عليك فقط كتابة ما يكفي من المعرف ليكون فريدًا. إذا كنت تقوم بتشغيل حاوية واحدة فقط وكان معرفها f766f4ac8d66bf7، يمكنك تحديد الحاوية باستخدام أي عدد من الأحرف بما في ذلك f فقط. المتطلب هو أن يسمح لك ما تكتبه بتحديد بشكل فريد حاوية واحدة.

الآن انتقل إلى متصفح الويب الخاص بك وانتقل إلى localhost:1337. تذكر، أنت لا تغير الصورة وأنها دائماً ما تستمع على المنفذ 80؛ أنت تغير قاعدة ترجمة المنفذ في تكوين Docker التي تتيح لك الاتصال بالحاوية.

Webpage being served up on port 1337

إيقاف جميع الحاويات

باستخدام docker stop، يمكنك إيقاف تشغيل حاوية واحدة ولكن كيف يمكنك إيقاف تشغيل عدة حاويات في وقت واحد؟ طريقة للقيام بذلك هي من خلال توفير معرفات حاويات متعددة مفصولة بالمسافة. يمكنك أن ترى أدناه مثال على كيفية إيقاف تشغيل ثلاث حاويات بمعرفات fd50b0a446e7، 36ee57c3b7da، و 7c45664906ff.

> docker stop fd50 36ee 7c45

إذا كنت تدير حاويات Docker في PowerShell، يمكنك أيضًا استخدام اختصار لإيقاف جميع الحاويات. قم بتغذية قائمة بمعرفات الحاويات عبر docker ps -q إلى المعلمة stop من خلال توسيع الأمر في PowerShell docker stop (docker ps -q).

تأكد من إيقاف جميع الحاويات عن طريق عدم ظهور أي حاويات عند كتابة docker ps.

التنظيف

لقد قمت بتنزيل بعض صور الحاويات وتشغيل بعض الحاويات التي توقفت الآن. على الرغم من توقفها، فإن التخزين المخصص لها لم يختفي من قرص المضيف المحلي. يجب عليك حذف الحاويات لتحرير تلك المساحة وتجنب تكدس مساحة العمل الخاصة بك.

لحذف حاوية واحدة، استخدم المعلمة remove rm كما هو موضح أدناه.

> docker container rm <container ID>

أو، لحذف جميع الحاويات التي توقفت، استخدم المعلمة prune كما هو موضح أدناه.

> docker container prune

Source:
https://adamtheautomator.com/docker-windows/