التقنيةالكمبيوتر والانترنتكيفية

كيفية إعداد بيئة Docker لتشغيل التطبيقات

كيفية إعداد بيئة Docker لتشغيل التطبيقات

دليلك الشامل لتهيئة دوكر وتطوير تطبيقاتك بكفاءة

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

مقدمة إلى Docker ومفاهيمه الأساسية

ما هو Docker؟

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

الحاويات مقابل الأجهزة الافتراضية

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

مكونات Docker الرئيسية

يتكون نظام Docker البيئي من عدة مكونات أساسية تعمل معًا. Docker Engine هو المحرك الرئيسي الذي يقوم بإنشاء وتشغيل وإدارة الحاويات. صور Docker (Docker Images) هي قوالب للقراءة فقط تحتوي على تعليمات لإنشاء حاوية، وهي تشبه “فئات” في البرمجة الكائنية. الحاويات (Containers) هي مثيلات قابلة للتشغيل من الصور، وهي تشبه “الكائنات” من تلك الفئات. Dockerfile هو ملف نصي يحتوي على جميع الأوامر اللازمة لبناء صورة Docker تلقائياً. هذه المكونات تعمل بتناغم لتوفير بيئة تطوير ونشر متكاملة.

متطلبات تثبيت Docker

متطلبات النظام

قبل الشروع في تثبيت Docker، من الضروري التحقق من أن نظامك يفي بالحد الأدنى من المتطلبات. بالنسبة لنظام التشغيل Windows، يتطلب Docker Desktop نظام Windows 10 64-bit: Pro, Enterprise, أو Education (الإصدار 1903 أو أحدث) أو Windows 11. كما يتطلب تمكين خاصية WSL 2 (Windows Subsystem for Linux) وتثبيت حزمة تحديث نواة WSL 2. بالنسبة لنظام macOS، يتطلب Docker Desktop إصدارات محددة من macOS (عادةً الأحدث) ومواصفات معينة للمعالج والذاكرة. أنظمة Linux تدعم Docker على نطاق واسع وتتطلب نواة Linux حديثة. يفضل دائماً الرجوع إلى الوثائق الرسمية لـ Docker للحصول على أحدث المتطلبات المحددة لإصدار نظام التشغيل الخاص بك.

الاتصال بالإنترنت

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

خطوات تثبيت Docker على أنظمة التشغيل المختلفة

تثبيت Docker على Windows (مع WSL 2)

لتثبيت Docker Desktop على Windows، ابدأ بتنزيل مثبت Docker Desktop من الموقع الرسمي لـ Docker. قبل التشغيل، تأكد من تمكين خاصية المحاكاة الافتراضية في BIOS/UEFI لنظامك. قم بتشغيل المثبت واتبع الإرشادات. سيوصي المثبت بتمكين WSL 2 إذا لم يكن مفعّلاً بالفعل. لتفعيل WSL 2 يدوياً، افتح PowerShell كمسؤول ونفذ الأمر `wsl –install`. بعد تثبيت WSL 2، تأكد من تعيينه كإصدار افتراضي باستخدام `wsl –set-default-version 2`. أخيرًا، قم بتشغيل Docker Desktop، وقد تحتاج إلى تسجيل الدخول باستخدام حساب Docker Hub الخاص بك. ستظهر أيقونة Docker في علبة النظام (System Tray) عند تشغيله بنجاح.

تثبيت Docker على macOS

تثبيت Docker Desktop على macOS عملية مباشرة. قم بتنزيل ملف DMG الخاص بـ Docker Desktop من الموقع الرسمي. بعد اكتمال التنزيل، افتح ملف DMG واسحب أيقونة Docker إلى مجلد التطبيقات (Applications). قم بتشغيل Docker من مجلد التطبيقات. عند التشغيل الأول، قد يطلب منك Docker إذن الوصول إلى بعض مكونات النظام، بالإضافة إلى صلاحيات المسؤول لتثبيت المكونات المساعدة. قد تحتاج أيضًا إلى تسجيل الدخول إلى Docker Hub. بمجرد الانتهاء، ستظهر أيقونة Docker في شريط القائمة العلوي (Menu Bar)، مما يشير إلى أن Docker Desktop يعمل وجاهز للاستخدام. يمكنك ضبط الإعدادات مثل تخصيص الموارد من خلال تفضيلات Docker.

تثبيت Docker على Linux (Ubuntu كمثال)

تثبيت Docker على Linux يتطلب استخدام سطر الأوامر. الخطوة الأولى هي تحديث فهرس حزم نظام التشغيل: `sudo apt update` ثم `sudo apt upgrade`. بعد ذلك، قم بتثبيت الحزم المطلوبة لتمكين apt لاستخدام مستودعات عبر HTTPS: `sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release`. أضف مفتاح GPG الرسمي لـ Docker: `curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg`. أضف مستودع Docker إلى مصادر apt: `echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null`. أخيراً، قم بتثبيت Docker Engine: `sudo apt update` ثم `sudo apt install docker-ce docker-ce-cli containerd.io`. لتجنب استخدام `sudo` في كل مرة، يمكنك إضافة مستخدمك إلى مجموعة Docker: `sudo usermod -aG docker $USER` ثم أعد تسجيل الدخول أو أعد تشغيل الجهاز لتطبيق التغيير.

التحقق من تثبيت Docker وتشغيله

تشغيل أمر “hello-world”

للتأكد من أن Docker يعمل بشكل صحيح بعد التثبيت، يمكنك تشغيل حاوية “hello-world” التجريبية. افتح نافذة طرفية (Command Prompt على Windows، Terminal على macOS/Linux) ونفذ الأمر التالي: `docker run hello-world`. إذا تم التثبيت بنجاح، فسيقوم Docker بسحب صورة “hello-world” إذا لم تكن موجودة محلياً، ثم سيقوم بتشغيل حاوية منها. ستظهر رسالة ترحيب على الشاشة، عادةً ما تقول “Hello from Docker!”، مما يؤكد أن Docker Engine قادر على تشغيل الحاويات بنجاح وأن الاتصال بـ Docker Hub يعمل بشكل صحيح. هذه الخطوة ضرورية للتحقق من سلامة التثبيت.

فحص حالة خدمة Docker

للتأكد من أن خدمة Docker تعمل في الخلفية، يمكنك التحقق من حالتها. على أنظمة Linux، استخدم الأمر `sudo systemctl status docker`. يجب أن تظهر الحالة “active (running)”. إذا كانت الخدمة لا تعمل، يمكنك بدء تشغيلها باستخدام `sudo systemctl start docker`. على Windows وmacOS، عادةً ما يكون Docker Desktop قيد التشغيل في الخلفية ويظهر أيقونته في علبة النظام أو شريط القائمة. يمكنك فتح تطبيق Docker Desktop للتحقق من حالته وتكوين الإعدادات. التأكد من أن خدمة Docker قيد التشغيل يضمن أنك تستطيع تنفيذ أوامر Docker والتعامل مع الحاويات والصور دون مشاكل.

التعامل مع صور Docker والحاويات

سحب الصور من Docker Hub

Docker Hub هو مستودع عام ضخم يضم الآلاف من صور Docker الجاهزة للاستخدام. لسحب صورة إلى جهازك، استخدم الأمر `docker pull [اسم الصورة]`. على سبيل المثال، لسحب صورة Ubuntu: `docker pull ubuntu`. يمكنك أيضاً تحديد إصدار معين (tag) للصورة، مثل `docker pull ubuntu:22.04`، وإلا فسيسحب أحدث إصدار (latest). بعد السحب، ستكون الصورة متاحة محلياً ويمكنك عرض الصور الموجودة لديك باستخدام `docker images`. هذه العملية توفر عليك عناء بناء الصور من الصفر وتمكنك من الاستفادة من بيئات جاهزة.

تشغيل الحاويات

بمجرد أن تكون الصورة متاحة محلياً، يمكنك تشغيل حاوية منها باستخدام الأمر `docker run`. على سبيل المثال، لتشغيل حاوية من صورة Ubuntu وتشغيل bash بداخلها: `docker run -it ubuntu bash`. الخيار `-it` يتيح لك التفاعل مع الحاوية في وضع الطرفية (interactive and pseudo-TTY). يمكنك أيضاً تعيين اسم للحاوية باستخدام `–name my-ubuntu-container` لتسهيل إدارتها لاحقاً. لتشغيل تطبيق ويب ونشر منفذه، استخدم `-p 80:80` لربط المنفذ 80 من الحاوية بالمنفذ 80 من جهازك المضيف، مما يتيح الوصول إلى التطبيق من خلال المتصفح. تذكر دائماً تحديد الأمر الذي ستقوم الحاوية بتنفيذه عند بدء التشغيل.

إيقاف، إعادة تشغيل، وحذف الحاويات

لإدارة الحاويات، هناك عدة أوامر أساسية. لعرض جميع الحاويات قيد التشغيل: `docker ps`. لعرض جميع الحاويات (بما في ذلك المتوقفة): `docker ps -a`. لإيقاف حاوية: `docker stop [اسم الحاوية أو ID]`. لإعادة تشغيل حاوية: `docker restart [اسم الحاوية أو ID]`. لحذف حاوية متوقفة: `docker rm [اسم الحاوية أو ID]`. إذا كنت ترغب في حذف حاوية قيد التشغيل، يمكنك استخدام الخيار `-f` مع `docker rm`، لكن يفضل إيقافها أولاً. لحذف جميع الحاويات المتوقفة: `docker container prune`. إدارة الحاويات بشكل فعال يضمن بقاء بيئة عملك نظيفة ومنظمة.

بناء صور Docker المخصصة (Dockerfile)

مفهوم Dockerfile

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

مثال بسيط لـ Dockerfile لتطبيق ويب

لنفترض أن لديك تطبيق ويب بسيط مكتوب بلغة Python. يمكن أن يكون Dockerfile الخاص به كالتالي:
`FROM python:3.9-slim-buster` (تحديد الصورة الأساسية)
`WORKDIR /app` (تعيين دليل العمل داخل الحاوية)
`COPY requirements.txt .` (نسخ ملف المتطلبات)
`RUN pip install -r requirements.txt` (تثبيت التبعيات)
`COPY . .` (نسخ ملفات التطبيق)
`EXPOSE 8000` (تعريض منفذ التطبيق)
`CMD [“python”, “app.py”]` (الأمر الذي سيتم تنفيذه عند بدء الحاوية). هذا المثال يوضح كيف يمكن لـ Dockerfile أن يحدد جميع الخطوات اللازمة لإعداد بيئة تشغيل التطبيق.

بناء الصورة وتشغيلها

بعد إنشاء ملف Dockerfile في نفس مجلد مشروعك، يمكنك بناء الصورة باستخدام الأمر: `docker build -t my-web-app .`. الخيار `-t` يحدد اسماً وعلامة (tag) للصورة، و `.` يشير إلى المجلد الحالي حيث يوجد Dockerfile. ستقوم هذه العملية بتحويل تعليمات Dockerfile إلى صورة Docker قابلة للتنفيذ. بعد نجاح البناء، يمكنك تشغيل حاوية من هذه الصورة: `docker run -p 80:8000 my-web-app`. هذا الأمر سيقوم بتشغيل تطبيق الويب داخل الحاوية وربط المنفذ 8000 داخل الحاوية بالمنفذ 80 على جهازك المضيف، مما يتيح لك الوصول إلى تطبيقك عبر المتصفح من خلال `http://localhost`.

إدارة التطبيقات متعددة الحاويات باستخدام Docker Compose

ما هو Docker Compose؟

Docker Compose هي أداة لتحديد وتشغيل تطبيقات Docker متعددة الحاويات. بدلاً من تشغيل كل حاوية على حدة بأوامر `docker run` معقدة، يتيح لك Docker Compose تحديد بنية التطبيق وخدماته وعلاقاتها في ملف YAML واحد (عادةً `docker-compose.yml`). هذا الملف يصف جميع الخدمات (مثل قاعدة بيانات، خادم ويب، خدمة تخزين مؤقت) والشبكات والمجلدات المشتركة التي يتطلبها تطبيقك. يوفر Docker Compose حلاً مثالياً للبيئات المعقدة التي تتطلب أكثر من حاوية واحدة، مما يبسط عملية الإدارة والنشر.

ملف docker-compose.yml

ملف `docker-compose.yml` هو قلب Docker Compose. يبدأ بتحديد إصدار صيغة Compose، ثم يحتوي على قسم `services` الذي يصف كل حاوية كخدمة منفصلة. لكل خدمة، يمكنك تحديد الصورة التي ستستخدمها (`image` أو `build` لـ Dockerfile)، المنافذ التي ستعرضها (`ports`)، المجلدات المشتركة (`volumes`)، متغيرات البيئة (`environment`)، والتبعيات بين الخدمات (`depends_on`). على سبيل المثال، لتطبيق ويب يتصل بقاعدة بيانات PostgreSQL، سيتضمن ملف Compose خدمتين: واحدة لتطبيق الويب والأخرى لقاعدة البيانات، مع تعريف واضح لكيفية تفاعلهما. هذا الملف هو بمثابة مخطط كامل لبنية تطبيقك.

تشغيل تطبيق باستخدام Compose

بمجرد إنشاء ملف `docker-compose.yml` في المجلد الرئيسي لمشروعك، يمكنك تشغيل التطبيق بأكمله بكل سهولة. افتح الطرفية وانتقل إلى المجلد الذي يحتوي على الملف، ثم نفذ الأمر: `docker compose up -d`. الخيار `-d` يشغل الحاويات في الخلفية (detached mode). سيقوم Compose ببناء الصور الضرورية (إذا حددت `build` في ملف Compose)، وسحب الصور غير الموجودة، ثم بدء تشغيل جميع الخدمات المحددة بالترتيب الصحيح. يمكنك مراقبة حالة الخدمات باستخدام `docker compose ps`. لإيقاف جميع الخدمات: `docker compose down`. يوفر Compose طريقة مبسطة وفعالة لإدارة بيئات التطوير المعقدة ونشرها.

نصائح وحلول لمشاكل شائعة

مشاكل التثبيت

إذا واجهت مشاكل أثناء تثبيت Docker، تأكد أولاً من أن نظامك يفي بجميع المتطلبات المسبقة، خاصة تمكين المحاكاة الافتراضية (Virtualization) في BIOS/UEFI. على Windows، تأكد من تحديث WSL 2 بشكل صحيح وتفعيل ميزة “Virtual Machine Platform”. في بعض الحالات، قد تتداخل برامج الأمان أو جدران الحماية مع عملية التثبيت؛ جرب تعطيلها مؤقتاً أثناء التثبيت. تحقق من سجلات تثبيت Docker للحصول على رسائل خطأ محددة. إعادة تشغيل الجهاز بعد التثبيت قد يحل بعض المشاكل. إذا استمرت المشكلة، جرب إلغاء تثبيت Docker بالكامل وإعادة التثبيت من جديد، مع اتباع الخطوات الرسمية بدقة.

مشاكل الاتصال بالشبكة

يمكن أن تحدث مشاكل الاتصال داخل حاويات Docker أو بين الحاويات والتطبيق المضيف. تأكد من أن المنافذ التي تحاول الوصول إليها مكشوفة (exposed) في Dockerfile أو ملف docker-compose.yml وأنها مربوطة (mapped) بشكل صحيح إلى منافذ على جهازك المضيف (باستخدام `-p` أو `ports`). إذا كانت الحاويات لا تستطيع التواصل مع بعضها البعض، تأكد من أنها على نفس شبكة Docker (افتراضياً، Docker Compose ينشئ شبكة لكل مشروع). يمكنك فحص إعدادات الشبكة للحاوية باستخدام `docker inspect [اسم الحاوية]`، والتحقق من قواعد جدار الحماية على جهازك المضيف. إعادة تشغيل خدمة Docker أو إعادة بناء الحاويات قد يحل مشاكل الشبكة المؤقتة.

مشاكل الأذونات

على أنظمة Linux، قد تواجه أخطاء “permission denied” عند محاولة تشغيل أوامر Docker دون `sudo`. لحل هذه المشكلة بشكل دائم، أضف مستخدمك إلى مجموعة Docker: `sudo usermod -aG docker $USER`. بعد تنفيذ هذا الأمر، ستحتاج إلى تسجيل الخروج ثم تسجيل الدخول مرة أخرى (أو إعادة تشغيل الجهاز) لتطبيق التغيير. هذا يمنح المستخدم الأذونات اللازمة لتشغيل أوامر Docker دون الحاجة إلى صلاحيات الجذر في كل مرة. تأكد أيضاً من أن المجلدات التي تقوم بربطها بالحاويات (volumes) لديها الأذونات الصحيحة لمستخدم Docker داخل الحاوية وخارجها.

تحسين أداء Docker

لتحسين أداء Docker، خصص موارد كافية (الذاكرة والمعالج) لـ Docker Desktop من إعداداته. تجنب استخدام مجلدات مشتركة كبيرة جداً على Windows وmacOS، حيث يمكن أن تؤثر على الأداء بسبب طبقة المحاكاة الافتراضية. استخدم Docker Volumes بدلاً من Bind Mounts في بعض الحالات لزيادة السرعة، خاصة مع قواعد البيانات. قم بتنظيف Docker بشكل دوري لحذف الصور والحاويات غير المستخدمة: `docker system prune -a`. استخدم الصور الأساسية الأصغر (مثل Alpine أو slim-buster) لتقليل حجم الصور والحاويات. تحسين Dockerfile الخاص بك عن طريق ترتيب التعليمات بعناية للاستفادة من التخزين المؤقت للطبقات يسرع من عملية البناء ويقلل من استهلاك الموارد.

الخاتمة

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

Dr. Mena

كاتب ومحرر بموقع هاو منذ عام 2016.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


زر الذهاب إلى الأعلى

أنت تستخدم إضافة Adblock

برجاء دعمنا عن طريق تعطيل إضافة Adblock