أستمع الى المقال

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

المتطلبات

  • حاسب مزوّد بنظام التشغيل Ubuntu Desktop أو Ubuntu server، إصدار 18.04 على الأقل.
  • معرفة بأوامر لينكس البسيطة، وصول لسطر الأوامر terminal وصلاحيات المدير عبر الأمر sudo.
  • اتصال بالإنترنت.
  • كون Docker شركة أمريكية، إذا كنت في بلد يخضع لعقوبات اقتصادية أمريكية، ستكون الخدمة غير متوفرة لديك. لذا، تحتاج إلى استخدام VPN لتجاوز الحجب، يمكن استخدام VPNGate.
 إعداد وتنصيب 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

سنشاهد ما يشبه السطور التالية:

Sample output
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  bridge-utils containerd dns-root-data dnsmasq-base pigz runc ubuntu-fan
Suggested packages:
  ifupdown aufs-tools cgroupfs-mount | cgroup-lite debootstrap docker-doc rinse zfs-fuse | zfsutils
The following NEW packages will be installed:
  bridge-utils containerd dns-root-data dnsmasq-base docker.io pigz runc ubuntu-fan
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 72.8 MB of archives.
After this operation, 326 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

اضغط Y ليكتمل تنصيب Docker بعد تحميل الملفات والحزم المطلوبة.
ويمكن التأكد من التنصيب عبر الأمر التالي الذي يظهر حالة Docker ورقم الإصدار:

$ docker --version
Docker version 20.10.7,
Docker version 20.10.7,

لنبدأ باستخدام Docker، نضيفها كخدمة لنواة نظام التشغيل لدينا عبر start docker.service، ويمكننا أيضاً أن نجعلها مفعّلة بشكل مباشر عند كل إقلاع للنظام عبر enable docker.service كما في سطري الأوامر التاليين:

$ sudo systemctl start docker.service
$ sudo systemctl enable docker.service

يمكننا الاطلاع على حاويات Docker المتوفرة محلياً وإعداداتها الحالية عبر تمرير سطر الأوامر التالي:

$ sudo docker info
Docker info
Docker info

تحتاج إلى استخدام صلاحيات المدير دائماً عند استخدام Docker. عبر الأمر sudo، يمكنك تجاوز هذا عبر منحه الصلاحيات مباشرةً عبر الأمر التالي: (ملاحظة هذه الخطوة اختيارية).

$ sudo usermod -aG docker $USER

ضع اسم المستخدم الذي تريد منحه صلاحيات الجذر (المدير)، بدلا من $USER، وفي مثالنا، اسم المستخدم هو bccline

root prevallige to docker
منح صلاحيات المدير لمستخدم docker

الآن Docker جاهزة للعمل بإعدادتها الافتراضية.

أمثلة متنوعة:

يمكن البحث من خلال Docker عن حاوية محددة، باستخدام الأمر التالي مع وضع اسم صورة الحاوية بدلاً من [name]

$ sudo docker search [name]

على سبيل المثال، يمكن البحث عن صور حاوية kali او Ubuntu او مخدم nginx، سنحصل على قائمة بعدد من صور للحاوية بإعدادات إصدارات مختلفة:

search for images
بحث عن صور حاوية Kali

مثال آخر للبحث عن صورة حاوية مخدم nginx أو ubuntu bash

$ sudo docker search nginx           //بحث عن حاوية nginx
$ sudo docker search ubuntu bash     //بحث عن صور حاوبه ubuntu bash 

يمكن اختبار مثال حاوية تجريبي hello-world عبر سطر الأوامر التالي:

$ sudo docker run hello-world
في حال الحجب .
docker شركة امريكيه لا تستطيع تقديم الخدمة للبلاد المعرضه لعقوبات اقتصادية امريكيه

إذا لم تتعرض لحجب الخدمة كما في الصورة السابقة ستحصل على التالي:

مثال استدعاء حاوية تطبيق -Hello world
مثال استدعاء حاوية تطبيق -Hello world

لنفترض أننا نريد العمل على ubuntu bash :

$ docker run -it ubuntu bash

بهذا ستتمكن من العمل على ubuntu bash واستخدام أوامر أبونتو:

ubuntu bash
ubuntu bash

للخروج وإغلاق الحاوية اكتب exit

$ sudo docker pull nginx
تثبيت مخدم  nginx

بعد انتهاء التحميل سنستخدم الأمر التالي لتحديد إعدادات حاوية nginx وتحديد البورت 8080:

$ sudo docker run -it --rm -d -p 8080:80 --name web nginx
تثبيت مخدم  nginx

يمكن الآن معاينة nginx من المتصفح عبر http://localhost:8080/

http://localhost:8080
http://localhost:8080

هكذا، يعمل مخدّم nginx بشكل صحيح كصورة حاويه لدينا.
ويمكننا إيقاف الحاوية عبر الأمر التالي:

$ docker stop web


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

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.