سنشرح في هذا المقال مفهوم الحاويات بإيجاز، وإعداد وتنصيب Docker في لينكس Ubuntu، مع بعض الأمثلة السريعة.
المتطلبات
- حاسب مزود بنظام التشغيل Ubuntu Desktop أو Ubuntu server .
- معرفة بأوامر لينكس البسيطة، وصول لسطر الأوامر terminal وصلاحيات المدير عبر الأمر sudo.
- اتصال بالإنترنت.
- كون Docker شركة أمريكية، إذا كنت في بلد يخضع لعقوبات اقتصادية أمريكية، ستكون الخدمة غير متوفرة لديك. لذا، تحتاج إلى استخدام VPN لتجاوز الحجب، يمكن استخدام VPNGate.
ما هي الـ Docker؟
دوكر (Docker) هي منصة برمجية افتراضية، موجهه لمدراء الأنظمة والمطوّرين على حد سواء، تستخدم في عمليات بناء وتشغيل البرامج وإدارتها ضمن بيئة معينة تدعى حاويات دوكر (Docker Containers)، ما يسمح بنقل المشروع و إدارته من جهاز إلى آخر والعمل عليه دون الحاجة لتعديل إعدادات ومتغيرات النظام أو تنصيب أو تحميل حزم معينة، حيث يتم فقط تنصيب دوكر وتشغيل الحاويات المُعدّة مسبقًا بإعدادات محددة تسمح بتشغيل التطبيق ضمن هذه الحاويات.
مفهوم الحاوية
الحاوية (Container) هي عبارة عن مجموعة من الحزم المعزولة عن الجهاز المحلي الخاص بك (Local Machine)؛ ما يمكن من تشغيل وتنفيذ واستخدام البرامج الموجودة داخل الحاوية دون أن تتعارض الحزم الموجودة داخل الحاوية مع الحزم المنصبة بالفعل على جهازك.
Docker مقابل VM :
تبدو Docker هكذا أقرب للجهاز الافتراضي (Virtual Machine)، ولكنها بعكس الأجهزة الافتراضية، لا تنشئ نظاماً وهمياً كاملاً في حاسبك، وبالنتيجة لا تستهلك إلا القليل جداً من موارد الجهاز، وتسمح باستخدام نفس نواة نظام لينكس للجهاز الذي تعمل عليه، ما يجعل البرامج أخف والأداء أعلى. والأهم أن Docker مفتوحة المصدر، وهذا يعني أن أي شخص يمكنه أن يضيف على هذه التقنية احتياجاته الخاصة ومميزاته الإضافية، حتى لو كانت غير موجودة في الموقع الأصلي.
إعداد وتنصيب Docker
للبدء في إعداد وتنصيب Docker في أبونتو نحتاج بدايةً تحديث system repositories أو مستودع النظام في أبونتو عبر سطور الأوامر التالية:
$ sudo apt update && apt upgrade -y or $ sudo apt update $ sudo apt upgrade
الحزم القديمة من Docker تحمل عادةً أحد المسميات التالية :docker ,docker.io أو docker-engine. ومن خلال الأمر التالي سنؤكد حذفها إن كانت موجودة:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
للبدء بتنصيب Docker-ce سنقوم بتنفيذ سطر الأوامر التالي:
$ sudo apt install docker.io
سنشاهد ما يشبه السطور التالية:
اضغط Y ليكتمل تنصيب Docker بعد تحميل الملفات والحزم المطلوبة.
ويمكن التأكد من التنصيب عبر الأمر التالي الذي يظهر حالة Docker ورقم الإصدار:
$ docker --version
لنبدأ باستخدام Docker، نضيفها كخدمة لنواة نظام التشغيل لدينا عبر start docker.service، ويمكننا أيضاً أن نجعلها مفعّلة بشكل مباشر عند كل إقلاع للنظام عبر enable docker.service كما في سطري الأوامر التاليين:
$ sudo systemctl start docker.service $ sudo systemctl enable docker.service
يمكننا الاطلاع على حاويات Docker المتوفرة محلياً وإعداداتها الحالية عبر تمرير سطر الأوامر التالي:
$ sudo docker info
تحتاج إلى استخدام صلاحيات المدير دائماً عند استخدام Docker. عبر الأمر sudo، يمكنك تجاوز هذا عبر منحه الصلاحيات مباشرةً عبر الأمر التالي: (ملاحظة هذه الخطوة اختيارية).
$ sudo usermod -aG docker $USER
ضع اسم المستخدم الذي تريد منحه صلاحيات الجذر (المدير)، بدلا من $USER، وفي مثالنا، اسم المستخدم هو bccline
الآن Docker جاهزة للعمل بإعدادتها الافتراضية.
أمثلة متنوعة:
يمكن البحث من خلال Docker عن حاوية محددة، باستخدام الأمر التالي مع وضع اسم صورة الحاوية بدلاً من [name]
$ sudo docker search [name]
على سبيل المثال، يمكن البحث عن صور حاوية kali او Ubuntu او مخدم nginx، سنحصل على قائمة بعدد من صور للحاوية بإعدادات إصدارات مختلفة:
مثال آخر للبحث عن صورة حاوية مخدم nginx أو ubuntu bash
$ sudo docker search nginx //بحث عن حاوية nginx $ sudo docker search ubuntu bash //بحث عن صور حاوبه ubuntu bash
يمكن اختبار مثال حاوية تجريبي hello-world عبر سطر الأوامر التالي:
$ sudo docker run hello-world
إذا لم تتعرض لحجب الخدمة كما في الصورة السابقة ستحصل على التالي:
لنفترض أننا نريد العمل على ubuntu bash :
$ docker run -it ubuntu bash
بهذا ستتمكن من العمل على ubuntu bash واستخدام أوامر أبونتو:
للخروج وإغلاق الحاوية اكتب exit
$ sudo docker pull nginx
بعد انتهاء التحميل سنستخدم الأمر التالي لتحديد إعدادات حاوية nginx وتحديد البورت 8080:
$ sudo docker run -it --rm -d -p 8080:80 --name web nginx
يمكن الآن معاينة nginx من المتصفح عبر http://localhost:8080/
هكذا، يعمل مخدّم nginx بشكل صحيح كصورة حاويه لدينا.
يمكننا إيقاف الحاوية عبر الأمر التالي:
$ docker stop web
سنشرح في مقالات لاحقة أمثلة أكثر عن استخدام حاويات Docker بشكل تفصيلي أكثر، بما في ذلك إنشاء صورة بشكل محلي، رفعها لمستودع Docker عند الرغبة، والأوامر الأساسية الملحقة الأخرى.