برنامج Docker التعليمي للمبتدئين: الأساسيات، Archiالبنية والحاويات

⚡ ملخص ذكي

Docker عبارة عن منصة حاويات تقوم بتجميع التطبيقات وتوابعها في حاويات محمولة وخفيفة الوزن. تشرح هذه النظرة العامة بنية Docker، وتثبيته على Ubuntu، والأوامر الأساسية، وكيف تختلف الحاويات عن الآلات الافتراضية التقليدية لتسريع عملية تسليم البرامج.

  • 🐳 الحاوية: يقوم Docker بالمحاكاة الافتراضية على مستوى نظام التشغيل، لذلك تشترك الحاويات في نواة النظام المضيف وتستخدم موارد أقل من الأجهزة الافتراضية.
  • 🧱 الهندسة المعمارية: يشكل محرك Docker (dockerd) والصور والسجلات والحاويات بنية العميل والخادم التي تقف وراء كل سير عمل Docker.
  • 📦 الصور والحاويات: الصورة عبارة عن قالب للقراءة فقط، بينما الحاوية عبارة عن نسخة قيد التشغيل، ويمكن لصورة واحدة أن تبدأ العديد من الحاويات.
  • 🗄️ السجلات: يخزن Docker Hub الصور العامة والخاصة، مما يمنحك ملايين الصور الجاهزة للاستخدام لسحبها وتشغيلها.
  • ⚙️ تركيب: On Ubuntu تقوم بإضافة مستودع Docker APT ومفتاح GPG، ثم تقوم بتثبيت حزمة docker-ce باستخدام apt-get.
  • ⌨️ الأوامر الأساسية: إدارة الحاويات باستخدام أوامر docker pull، run، start، stop، ps، stats، والصور من سطر الأوامر.

دليل تعليمي للمبتدئين حول Docker، يشمل بنية النظام وتثبيته على Ubuntuوأوامر الحاويات الأساسية

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

ما هو عامل الميناء؟

عامل في حوض السفن Docker هي منصة لتطوير البرمجيات تعتمد على المحاكاة الافتراضية، وتتيح تشغيل أنظمة تشغيل متعددة على نفس المضيف. تساعدك هذه المنصة على فصل البنية التحتية عن التطبيقات، مما يُمكّنك من تقديم البرمجيات بسرعة. على عكس برامج إدارة الأجهزة الافتراضية (Hypervisors)، التي تُستخدم لإنشاء الأجهزة الافتراضية، تُنفّذ Docker المحاكاة الافتراضية على مستوى النظام باستخدام وحدات تُسمى حاويات Docker.

تعمل حاويات Docker فوق نظام التشغيل المضيف، كما هو موضح في الصورة أدناه. وهذا يُحسّن الكفاءة والأمان. كما يُمكنك تشغيل عدد أكبر من الحاويات مقارنةً بالأجهزة الافتراضية على نفس البنية التحتية، لأن الحاويات تستهلك موارد أقل.

المحاكاة الافتراضية في Docker vs Hypervisor
المحاكاة الافتراضية في Docker vs Hypervisor

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

الآن وقد عرفت ما هو Docker، دعنا نلقي نظرة على الأسباب الرئيسية التي تدفع الفرق لاختياره.

لماذا استخدام دوكر؟

فيما يلي الأسباب الرئيسية لاستخدام Docker:

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

تأتي هذه المزايا من تصميم Docker. يشرح القسم التالي بنية Docker ومكوناتها الأساسية.

عامل في حوض السفن Architecture

والآن، في هذا الدرس التعليمي حول حاويات Docker، دعونا نلقي نظرة على المكونات الرئيسية لبنية Docker.

عامل في حوض السفن Archiمكونات البنية: المحرك، والصور، والسجلات، والحاويات

عامل في حوض السفن Architecture

عامل الميناء

Docker هو تطبيق عميل-خادم، مما يعني أن لدينا عملاء يقومون بتمرير الطلبات إلى الخادم. برنامج Docker الخفي، المسمى dockerd، هو محرك Docker الذي يمثل الخادم. يمكن تشغيل البرنامج الخفي والعملاء على نفس المضيف أو على مضيف بعيد، ويتواصلون من خلال ملف تنفيذي للعميل يعمل عبر سطر الأوامر وبروتوكول كامل. RESTful API الذي يتفاعل مع dockerd.

صور عامل ميناء

صور Docker هي بمثابة "الشفرة المصدرية" لحاوياتنا؛ فنحن نستخدمها لبناء الحاويات. يمكن تثبيت البرامج مسبقًا على هذه الصور، مما يُسرّع عملية النشر. وهي قابلة للنقل، ويمكنك استخدام الصور الموجودة أو إنشاء صورك الخاصة.

سجلات Docker

يخزن Docker الصور التي نبنيها في سجلات. توجد سجلات عامة وخاصة. لدى Docker سجل عام يسمى دوكر هابحيث يمكنك أيضًا تخزين الصور بشكل خاص. يحتوي Docker Hub على ملايين الصور التي يمكنك البدء باستخدامها فورًا.

حاويات دوكر

تُعدّ الحاويات الوحدات التنظيمية في Docker وأحد مفاهيمها الأساسية. فعندما نبني صورةً ونشغلها، فإننا نشغلها داخل حاوية. ويُستخدم تشبيه الحاوية نظرًا لإمكانية نقل البرنامج الذي يعمل بداخلها: إذ يُمكن نقله، أو "شحنه"، أو تعديله، أو إدارته، أو إنشائه، أو حذفه، تمامًا كما تتعامل سفن الشحن مع الحاويات الحقيقية.

بعبارات بسيطة، الصورة هي قالب، والحاوية هي نسخة من هذا القالب. يمكن أن يكون لديك حاويات (نسخ) متعددة من نفس الصورة.

يُظهر التفاعل بين هذه المكونات المختلفة كيفية عمل تقنية حاويات Docker معًا. وتتيح لك أوامر مثل docker pull و docker run، والتي سنتناولها لاحقًا، إدارة سير العمل هذا.

مع مراعاة بنية النظام، دعونا نقوم بتثبيت Docker حتى تتمكن من تجربة هذه المكونات بنفسك.

كيفية تثبيت Docker على نظام Linux/Ubuntu

فيما يلي شرح مفصل لعملية تثبيت Docker على نظام Linux/Ubuntu:

الخطوة 1) لتثبيت Docker، ستحتاج إلى حزم DEB الخاصة بفريق Docker. أولاً، بعض المتطلبات الأساسية Ubuntu يلزم تثبيت بعض الحزم. استخدم الأمر أدناه لتثبيتها.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*العلامة "\" ليست ضرورية فهي تستخدم للسطر الجديد، إذا أردت يمكنك كتابة الأمر دون استخدام "\" في سطر واحد فقط.

الخطوة 2) أضف مفتاح GPG الرسمي لـ Docker مع بصمة الإصبع. استخدم أمر Docker التالي لإدخال مفتاح GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

الخطوة 3) بعد ذلك، أضف مستودع Docker APT باستخدام الأمر أدناه.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

قد يُطلب منك تأكيد رغبتك في إضافة المستودع وإضافة مفتاح GPG تلقائيًا إلى مضيفك. يجب أن يقوم الأمر lsb_release بتعبئة Ubuntu نسخة توزيع المضيف الخاص بك.

الخطوة 4) بعد إضافة مفتاح GPG، قم بتحديث مصادر APT باستخدام أمر Docker التالي.

$ sudo apt-get update

يمكنك الآن تثبيت حزمة Docker نفسها.

الخطوة 5) بمجرد تحديث مصادر APT، ابدأ بتثبيت حزم Docker على Ubuntu باستخدام أمر Docker التالي.

$ sudo apt-get install docker-ce

يقوم الأمر أعلاه بتثبيت Docker والحزم الأخرى المطلوبة. قبل إصدار Docker 1.8.0، كان اسم الحزمة lxc-docker، وبين إصداري Docker 1.8 و1.13، كان اسم الحزمة docker-engine.

NOTE: Docker لـ Windows يتطلب Windows 10 Pro أو Enterprise الإصدار 14393، أو Windows نظام التشغيل Windows Server 2016 RTM، للتشغيل.

كيفية استخدام Docker باستخدام أوامر Docker الأساسية

إليك كيفية استخدام Docker مع بعض أوامر Docker الأساسية.

الأمر الأساسي الذي يجب عليك تشغيله بعد تثبيت Docker هو docker info، كما ذكرنا سابقًا.

$ sudo docker info

ينبغي أن تحصل على نتيجة مشابهة لما يلي.

استخدم Docker باستخدام أوامر Docker الأساسية، مع عرض مخرجات معلومات Docker.

كما هو موضح في مثال Docker أعلاه، يمكننا رؤية معلومات حول حاويات Docker: عدد الحاويات قيد التشغيل، أو المتوقفة مؤقتًا، أو المتوقفة تمامًا، وعدد الصور التي تم تنزيلها. والآن، لنحصل على أول صورة لدينا.

$ sudo docker pull alpine

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

*alpine عبارة عن صورة Docker بسيطة تعتمد على Alpine Linux مع فهرس حزمة كامل وحجمه 5 ميغابايت فقط.

إذا أردنا تشغيل الصورة كحاوية، فإننا نستخدم الأمر التالي.

$ sudo docker run -i -t alpine /bin/bash

يُرسلنا تشغيل الأمر مباشرةً إلى طرفية Alpine. يُبقي الخيار ‎-i مدخل STDIN مفتوحًا من الحاوية حتى عند عدم اتصالك بها؛ هذا الإدخال القياسي الدائم هو نصف ما تحتاجه لواجهة تفاعلية. أما الخيار ‎-t فهو النصف الآخر، ويُوجه Docker لتعيين طرفية وهمية للحاوية. معًا، يُوفران لنا واجهة تفاعلية داخل الحاوية الجديدة. نُنهي الحاوية باستخدام أمر الخروج البسيط.

الآن، في هذا الدرس التعليمي الأساسي حول Docker، يمكننا تجربة تشغيل Ubuntu صورة.

$ sudo docker run -it ubuntu /bin/bash

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

$ sudo docker run –-name our_container -it ubuntu /bin/bash

ثم نخرج مرة أخرى. يمكننا أيضاً تشغيل حاوية أنشأناها مسبقاً بدون واجهة تفاعلية.

$ sudo docker start container_name

ونقوم بإيقاف الحاوية عن طريق كتابة الأمر docker stop container_name.

$ sudo docker stop container_name

إذا أردنا رؤية جميع الحاويات قيد التشغيل، فإننا ببساطة نقوم بتشغيل ما يلي.

$ docker ps

بالنسبة لجميع الحاويات، نضيف "-a" في نهاية نفس الأمر، مثل docker ps -a. يعرض هذا الأمر معرف الحاوية، والصورة التي تستخدمها، وتاريخ إنشائها، وحالة تشغيلها، والمنافذ المكشوفة، واسمًا تم إنشاؤه عشوائيًا لتسهيل الإدارة.

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

$ docker stats

يمكنك أيضًا رؤية الصور التي قمت بتنزيلها محليًا، بالإضافة إلى معلومات عنها.

$ sudo docker images

يعرض الأمر في مثال Docker أعلاه كل صورة Docker مع علامة توضح إصدار الصورة، ومعرف الصورة المميز، وتاريخ الإنشاء، وحجم الصورة.

لفهم سبب كون الحاويات تمثل تحسناً كبيراً، من المفيد النظر إلى كيفية تطور المحاكاة الافتراضية.

ما هي الافتراضية؟

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

تحسّنت الأمور مع ظهور برامج إدارة الأجهزة الافتراضية (Hypervisors). تشغل هذه البرامج عدة تطبيقات في وقت واحد. الأجهزة الظاهريةأو الأجهزة الافتراضية، على نفس المضيف، والتي قد تكون قيد التشغيل أو متوقفة. قللت الأجهزة الافتراضية بشكل كبير من وقت الانتظار لنشر التعليمات البرمجية وإصلاح الأخطاء، لكن العامل الحاسم الحقيقي كان حاويات Docker.

وتعود شعبية Docker أيضاً إلى أدوات التنسيق التي تدير الحاويات على نطاق واسع، مثل Kubernetesقبل المتابعة، إليك مرجع سريع لأهم أوامر Docker.

أوامر عامل ميناء هامة

فيما يلي أوامر Docker المهمة:

أمر الوصف
معلومات عامل الميناء أمر المعلومات
سحب عامل ميناء قم بتنزيل صورة
تشغيل عامل الميناء -i -t image_name /bin/bash تشغيل الصورة كحاوية
عامل ميناء يبدأ Our_container ابدأ الحاوية
عامل ميناء توقف حاوية_اسم أوقف الحاوية
عامل الميناء قائمة بجميع الحاويات قيد التشغيل
احصائيات عامل الميناء معلومات الحاوية
صور عامل ميناء قائمة الصور التي تم تنزيلها
تنظيف عامل الميناء اقتل جميع الحاويات قيد التشغيل.

اقرأ هذه أيضاً. أسئلة وأجوبة مقابلة وظيفة عامل ميناء مناسب للمبتدئين وكذلك للمحترفين ذوي الخبرة.

الأسئلة الشائعة

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

ملف Dockerfile هو نص برمجي عادي يحتوي على تعليمات مثل FROM وRUN وCOPY وCMD. يقرأ Docker هذه التعليمات لإنشاء صورة تلقائيًا. يضيف كل سطر طبقة، مما يسمح لك بإعادة إنتاج نفس البيئة على أي جهاز.

يُعرّف Docker Compose تطبيقات متعددة الحاويات ويُشغّلها باستخدام ملف YAML واحد. تصف كل خدمة وشبكة ووحدة تخزين مرة واحدة، ثم تبدأ تشغيل كل شيء باستخدام الأمر docker compose up. يُعدّ مثاليًا للتطوير المحلي واختبار الخدمات المتصلة.

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

محرك Docker مجاني ومفتوح المصدر بموجب ترخيص Apache 2.0. برنامج Docker Desktop مجاني للاستخدام الشخصي والتعليمي والشركات الصغيرة، بينما تحتاج الشركات الكبيرة إلى اشتراك مدفوع. يوفر Docker Hub خطط استضافة صور مجانية ومدفوعة.

يعمل Docker بشكل أصلي على نظام Linux وهو مدعوم على Windows و macOS عبر Docker Desktop. على Windows يستخدم Docker، في نظامي التشغيل Mac وMac، آلة افتراضية خفيفة الوزن لتشغيل نواة Linux التي تتطلبها الحاويات. معظم صور الحاويات مبنية على نظام Linux.

تُنشئ المساعدات المدعومة بالذكاء الاصطناعي ملفات Dockerfiles وdocker-compose وأوامر سطر الأوامر من خلال توجيهات بلغة بسيطة. كما تقرأ سجلات البناء وأخطاء الحاويات، وتشرح السبب، وتقترح حلولاً. راجع دائمًا التكوين المُنشأ للتأكد من صحة علامات الصور والمسارات والأمان قبل تشغيله.

نعم. مساعد الطيار جيثب ويمكن لـ ChatGPT إنشاء ملفات Dockerfiles و Compose من تعليق أو وصف قصير. فهي تُسرّع عملية كتابة التعليمات البرمجية الأساسية، ولكن يجب عليك التحقق من الصور الأساسية والإصدارات وأفضل الممارسات، لأن المقاطع البرمجية المُنشأة قد تستخدم إعدادات افتراضية قديمة.

تلخيص هذه التدوينة بـ: