مقدمة
Docker هو منصة تجعل تشغيل وإدارة عمليات التطبيقات في الحاويات أسهل. فهو يوفر طريقة لفصل تطبيقاتك عن بنيتك التحتية. الحاويات تشبه إلى حد كبير الأجهزة الافتراضية، ولكنها أكثر قابلية للنقل، وكفاءة، وسهولة في الاستخدام. هناك طرق مختلفة لتثبيت Docker على Linux توزيعات. الطريقة الأكثر شيوعًا وسهولة لتثبيت Docker على نظام التشغيل الحالي هي استخدام أوامر yum.
سيوضح هذا البرنامج التعليمي كيفية إعداد واستخدام Docker على CentOS 7 في بضع خطوات بسيطة.
المتطلبات الأساسية:
- 64-bit مثيل CentOS 7.
- مستخدم غير جذر يمتلك صلاحيات sudo.
يتم تشغيل جميع الأوامر التي تقوم بتنفيذها طوال هذا البرنامج التعليمي كمستخدم غير جذر، وإذا لزم الأمر، سيتم توفير وصول الجذر باستخدام الكلمة المفتاحية sudo.
الخطوة 1: إعداد Docker على مثيل CentOS 7
قد لا يحتوي مستودع CentOS 7 الرسمي على أحدث حزمة تثبيت لـ Docker. في هذا القسم، ستقوم بتثبيت أحدث إصدار من Docker من مستودع Docker الرسمي. أولاً، تحتاج إلى تحديث قاعدة بيانات الحزم باستخدام:
|
1 |
sudo yum check-update |
بعد اكتمال خطوة التحديث، قم بتشغيل الأمر أدناه لتنزيل وتثبيت أحدث إصدار من Docker:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
تم تثبيت Docker الآن، وبالتالي يمكنك بدء تشغيل Docker daemon عن طريق تشغيل الأمر أدناه:
|
1 |
sudo systemctl start docker |
للتحقق مما إذا كان Docker daemon قيد التشغيل، اكتب ما يلي:
|
1 |
sudo systemctl status docker |
يجب أن يكون مخرج أمر systemctl status مشابهًا للمخرج المشترك أدناه، والذي يوضح أنه قيد التشغيل:
|
1 2 3 4 5 6 |
Output: ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-02-17 18:22:06 UTC; 10s ago Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
أخيرًا، للتأكد من بدء تشغيل Docker عند إعادة تشغيل جهازك، استخدم الأمر:
|
1 |
sudo systemctl enable docker |
يوفر لك تثبيت Docker خدمة Docker بالإضافة إلى أداة العميل المساعدة (عميل سطر أوامر Docker). في الأقسام التالية من البرنامج التعليمي، ستتمكن من الحصول على مزيد من التدريب العملي باستخدام أوامر Docker.
يمكنك أيضًا إلقاء نظرة على برنامجنا التعليمي المتعمق حول كيفية تثبيت & تشغيل Docker على Ubuntu في السحابة العامة.
الخطوة 2: استخدام أوامر Docker بدون بادئة Sudo
تحتاج أوامر Docker إلى صلاحيات الجذر لتشغيلها. وبالتالي، إذا كنت تريد تشغيل الأوامر، فسيتعين عليك إسباقها بـ sudo. أثناء التثبيت، يتم إنشاء مجموعة Docker افتراضيًا. إذا قمت بإضافة مستخدم إلى المجموعة، فيمكنك تشغيل أوامر Docker بدون sudo. ستؤدي محاولة تشغيل أوامر Docker بدون sudo أو دون إضافة المستخدم إلى المجموعة إلى ظهور مخرج مشابه لما يلي:
|
1 2 3 |
Output: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
ستضمن إضافة اسم المستخدم الخاص بك إلى مجموعة Docker عدم اضطرارك لاستخدام sudo لتشغيل أوامر Docker:
|
1 |
sudo usermod -aG docker $(whoami) |
لإضافة مستخدم آخر إلى مجموعة Docker، يمكنك ببساطة استبدال اسم المستخدم في الأمر:
|
1 |
sudo usermod -aG docker username |
بالنسبة لبقية هذا الدليل، سنفترض أن جميع الأوامر يتم تنفيذها بواسطة مستخدم في مجموعة مستخدمي Docker. إذا لم يكن الأمر كذلك، يمكنك استخدام بادئة sudo مع الأوامر.
الخطوة 3: تنفيذ أوامر Docker
الآن بعد أن قمت بتثبيت Docker وتشغيله، دعنا نلقي نظرة على بعض الأوامر للتعرف على أداة سطر أوامر Docker. عادةً ما تأخذ أوامر Docker الشكل التالي:
|
1 |
docker [option] [command] [arguments] |
للعثور على جميع الأوامر الفرعية المتاحة، يجب عليك استخدام:
|
1 |
docker |
اعتبارًا من Docker 20.10.3، تشمل القائمة الكاملة للأوامر الفرعية المتاحة ما يلي:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
المخرجات: attach ربط تدفقات الإدخال والإخراج, والأخطاء, القياسية المحلية بحاوية قيد التشغيل running container build بناء صورة من Dockerfile a Dockerfile commit إنشاء صورة جديدة من تغييرات الحاوية container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events الحصول على أحداث في الوقت الفعلي من الخادم exec تشغيل أمر في حاوية قيد التشغيلcontainer export تصدير نظام ملفات 'الحاوية كأرشيف tar a tar archive عرض سجل الصورةhistory of an image images سرد الصور import استيراد المحتويات من ملف tarball لإنشاء صورة نظام ملفات filesystem image info عرض معلومات -على مستوى النظام inspect إرجاع معلومات -منخفضة المستوى حول كائنات Docker kill إنهاء حاوية واحدة أو أكثر قيد التشغيل load تحميل صورة من أرشيف tar أو STDINأو STDIN login تسجيل الدخول إلى سجل Dockerregistry logout تسجيل الخروج من سجل Dockerregistry logs جلب سجلات الحاويةof a container pause إيقاف مؤقت لجميع العمليات داخل حاوية واحدة أو أكثرحاويات port عرض قائمة بتعيينات المنافذ أو تعيين محدد mapping للحاوية the container ps عرض قائمة الحاويات pull سحب an صورة أو a مستودع من a سجل push دفع an صورة أو a مستودع إلى a سجل rename إعادة تسمية a حاوية restart إعادة تشغيل حاوية أو أكثر من الحاويات rm إزالة حاوية أو أكثر من الحاويات rmi إزالة صورة أو أكثر من الصور run تشغيل a أمر في a حاوية جديدة save حفظ صورة أو أكثر من الصور في أرشيف tar archive (يتم بثه إلى STDOUT بشكل افتراضي) search البحث في the Docker Hub عن صور start بدء تشغيل حاوية أو أكثر من الحاويات المتوقفة stats عرض a بث مباشر لتدفق إحصاءات استخدام حاوية(s) موارد استخدام إحصاءات stop إيقاف حاوية أو أكثر من الحاويات المشغلة tag إنشاء a علامة TARGET_IMAGE تشير إلى to SOURCE_IMAGE top عرض العمليات المشغلة processes لحاوية a container unpause إلغاء الإيقاف المؤقت لـ جميع العمليات داخل حاوية أو أكثر من الحاويات update تحديث تكوين of حاوية أو أكثر من الحاويات version عرض معلومات إصدار Dockerinformation wait الانتظار حتى تتوقف حاوية واحدة أو أكثر ثم , طباعة رموز الخروج الخاصة بها |
يمكنك استخدام علامة –help مع أمر معين للحصول على مزيد من المعلومات عنه:
|
1 |
docker subcommand --help |
للحصول على معلومات مفصلة حول النظام، استخدم:
|
1 |
docker info |
الخطوة 4: العمل مع صور Docker
يمكن تسمية صور Docker بالمخطط التفصيلي لحاويات Docker. عادةً ما يتم سحب هذه الصور من Docker Hub، وهو سجل يديره مشروع Docker. يمكن لأي شخص إنشاء صوره ودفعها على Docker Hub. ونتيجة لذلك، يمكنك بسهولة العثور على مجموعة واسعة من التطبيقات وتوزيعات أنظمة التشغيل في السجل. دعنا نجرب برنامجًا بسيطًا يؤكد الوصول إلى Docker Hub:
|
1 |
docker run hello-world |
يجب أن تحصل على مخرجات كما هو موضح أدناه، مما يوضح أن Docker يعمل:
|
1 2 3 4 |
المخرجات: مرحبًا من Docker! هذه الرسالة توضح أن عملية التثبيت الخاصة بك تبدو أنها تعمل بشكل صحيح. ... |
يمكنك العثور على صور Docker المتنوعة على Docker Hub باستخدام أمر البحث. على سبيل المثال، راجع الأمر أدناه للبحث عن صورة CentOS:
|
1 |
docker search centos |
سيعرض استعلام البحث قائمة بجميع الصور التي تطابقت مع السلسلة الفرعية. في حالتك، يجب أن تكون المخرجات مثل:
|
1 2 3 4 5 6 7 8 |
المخرجات: الاسم الوصف النجوم رسمي تلقائي centos البناء الرسمي لـ of CentOS. 6410 [OK] ansible/centos7-ansible Ansible على Centos7 132 [OK] consol/centos-xfce-vnc Centos حاوية مع "بلا واجهة" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL مستودعات… 117 [OK] centos/systemd systemd مُمكّن أساسي حاوية. 96 [OK] ... |
في نتائج البحث، توجد أعمدة مختلفة تصف معلومات حول الصورة. يحدد الرمز OK في العمود OFFICIAL أن الصورة تم إنشاؤها ودعمها من قِبل الشركة المطورة للتطبيق. بمجرد استقرارك على الصورة، يمكنك تنزيلها إلى جهازك المحلي باستخدام أمر Docker pull:
|
1 |
docker pull centos |
بعد تنزيل الصورة، يمكنك تشغيل الحاوية باستخدام أمر Docker run. إذا حاولت تشغيل صورة مباشرة دون تنزيلها مسبقًا، فسيقوم Docker بتنزيل الصورة وتشغيل الحاوية بعد ذلك:
|
1 |
docker run centos |
يمكنك عرض قائمة بالصور التي تم تنزيلها على جهازك المحلي باستخدام الأمر أدناه:
|
1 |
docker images |
من مفترض أن تحصل على مخرجات مشابهة:
|
1 2 3 4 |
المخرجات: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 أشهر مضت 209MB hello-world latest bf756fb1ae65 13 أشهر مضت 13.3kB |
لاحقًا في هذا البرنامج التعليمي، ستتمكن من تعديل الصور لتشغيل الحاويات. يمكن إضافة هذه الصور الجديدة أو دفعها إلى Docker Hub والمستودعات الأخرى التي تستضيف صور Docker.
الخطوة 5: تشغيل حاوية بشكل تفاعلي
هناك أنواع مختلفة من الحاويات. حاوية hello-world التي قمت بتشغيلها في الخطوة 4 هي نوع من الحاويات التي تعمل وتخرج بعد طباعة رسالة. نوع آخر من الحاويات هو الحاوية التفاعلية. يمكنك استخدام الحاويات التفاعلية بطريقة مماثلة للآلة الافتراضية.
دعنا ننشئ حاوية من أحدث صورة لـ CentOS. سيؤدي استخدام العلامتين -i و -t في أمر Docker run إلى منح وصول تفاعلي إلى حاوية CentOS:
|
1 |
docker run -it centos |
ستتغير محث الأوامر ويجب أن تبدو مثل المخرجات أدناه:
|
1 2 |
المخرجات: [root@3ce69d2a35b9 /]# |
|
1 |
ملاحظة: إن حاوية معرف المعروض في الـ أمر محث هو فريد و إنه سوف يكون في المتناول بعد ذلك, في الـ مثال إنه هو 3ce69d2a35b9. |
الآن أي أمر تقوم بتنفيذه سيعمل داخل الحاوية. هذا مشابه لتشغيل أمر في آلة افتراضية. دعنا نحاول تثبيت MySQL في حاوية CentOS. يمكنك القيام بذلك باستخدام:
|
1 |
yum install mysql |
الخطوة 6: حفظ التغييرات في حاوية إلى صورة Docker
بعد تشغيل الحاوية، يمكنك القيام بجميع العمليات التي يمكن القيام بها في جهاز افتراضي مماثل، مثل إنشاء/تعديل الملفات أو إعداد تطبيق. يرجى ملاحظة أن هذه التغييرات ستبقى فقط لتلك الحاوية، وبعد تدمير الحاوية ستفقد التغييرات التي أجريتها.
في هذا الجزء من البرنامج التعليمي، ستتعلم كيفية إنشاء صورة Docker جديدة من حاوية بالتغييرات التي أجريتها. بعد الخطوة 5 سيكون لديك حاوية CentOS تعمل مع تثبيت خادم MySQL. هذه الحاوية تختلف الآن عن صورة CentOS العادية. يمكنك حفظ هذه الحالة للحاوية لاستخدامها لاحقًا. أولاً، تحتاج إلى الخروج من الحاوية باستخدام:
|
1 |
exit |
قم بحفظ (commit) التغييرات التي أجريتها في الحاوية إلى صورة Docker جديدة باستخدام الأمر أدناه:
|
1 |
docker commit -m "التغييرات التي تم إجراؤها على الصورة" -a "اسم الكاتب" container-id repository/new_image_name |
في الأمر، يشير -m إلى رسالة الالتزام (commit message) ويجب أن يشير بشكل أساسي إلى التغييرات التي تم إجراؤها، وتُستخدم العلامة -a لذكر الكاتب. معرف الحاوية (Container-id) هو المعرف من الخطوة 5، والذي حصلت عليه بعد تشغيل الحاوية في الوضع التفاعلي، وعادةً ما يكون المستودع (repository) هو اسم المستخدم الخاص بك على Docker Hub. على سبيل المثال:
|
1 |
docker commit -m "تمت إضافة mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
ملاحظة: بعد الـ جديدة صورة يتم حفظها فإنها تكون محفوظة على جهازك النظام. في الـ القادمة مراحل من هذا الدرس, أنت سوف تتعلم كيف أن ترفع صورة صورة إلى Docker Hub و في الـ المشابهة السجلات التي تستضيف docker صور . بمجرد صورتك صورة يتم رفعها إلى الـ السجل, يمكن أن يتم الوصول إليها بواسطة الآخرين كذلك أيضًا. |
الآن بعد أن تم حفظ الصورة، يجب أن يسرد الأمر Docker images الصورة الجديدة بالإضافة إلى الصور القديمة:
|
1 |
docker images |
يجب أن يكون مخرج الأمر مشابهًا لما يلي:
|
1 2 3 4 5 |
المخرجات: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 ثوانٍ مضت 308MB centos latest 300e315adb2f 2 أشهر مضت 209MB hello-world latest bf756fb1ae65 13 أشهر مضت 13.3kB |
كما هو موضح في المثال، تم إنشاء صورة جديدة centos-mysql باستخدام صورة CentOS من Docker Hub. يحدد الاختلاف في الحجم أنه تم إجراء بعض التغييرات. في هذا المثال، كان ذلك إضافة خادم MySQL في الحاوية. في المرة القادمة إذا كنت بحاجة إلى حاوية بها خادم MySQL، يمكنك فقط تشغيل الصورة الجديدة، وها أنت ذا! لديك حاوية CentOS تعمل مع خادم MySQL مثبت مسبقًا.
الخطوة 7: إدارة حاويات Docker
الآن بعد أن أصبحت مألوفًا مع Docker، بعد استخدامه لبعض الوقت، لديك بالفعل بعض الحاويات النشطة وبعض الحاويات غير النشطة. للحصول على قائمة بالحاويات النشطة، يجب عليك استخدام:
|
1 |
docker ps |
يجب أن تشاهد مخرجًا مشابهًا:
|
1 2 3 |
المخرجات: الحاوية المعرف الصورة الأمر تم إنشاؤه الحالة المنافذ الأسماء 604c889cf404 centos "/bin/bash" 20 دقائق مضت يعمل 20 دقائق intelligent_easley |
لعرض كل من الحاويات النشطة وغير النشطة، يجب عليك استخدام العلامة -a مع الأمر:
|
1 |
docker ps -a |
للعثور على آخر حاوية قمت بإنشائها، يمكنك توفير العلامة -l:
|
1 |
docker ps -l |
لإيقاف حاوية قيد التشغيل/نشطة، قم بتشغيل أمر بسيط:
|
1 |
docker stop container-id |
يمكنك العثور على container-id في مخرجات أمر Docker ps.
الخطوة 8: نشر الصور إلى مستودع
الخطوة التالية بعد إنشاء الصورة الجديدة هي مشاركتها مع أصدقائك. يمكنك أيضًا إتاحتها للعالم بأكمله باستخدام Docker Hub أو أي سجل آخر. يتعين عليك تسجيل الدخول إلى السجل المعني قبل دفع الصورة.
في الجزء التالي من البرنامج التعليمي، ستتعلم كيفية دفع الصور إلى Docker Hub. أولاً، قم بالتسجيل في Docker Hub. ستحتاج إلى تسجيل الدخول إلى Docker Hub لدفع صورتك باستخدام الأمر أدناه:
|
1 |
docker login -u docker-registry-username |
بمجرد تقديم كلمة المرور الصحيحة ونجاح المصادقة، يمكنك دفع صورتك. لدفع الصورة، استخدم الأمر أدناه:
|
1 |
docker push docker-registry-username/docker-image-name |
ستكون مخرجات الأمر مشابهة لهذا:
|
1 2 3 4 5 |
المخرجات: عملية الدفع تشير إلى المستودع [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: تم الدفع 2653d992f4ef: تم تركيبه من library/centos ... |
بمجرد دفع الصورة، يجب أن تظهر في لوحة تحكم حسابك، كما هو موضح في الصورة أدناه:

في حالة الفشل بطريقة مماثلة، فمن المحتمل أنك لم تقم بتسجيل الدخول:
|
1 2 3 4 5 6 7 |
المخرجات: عملية الدفع تشير إلى المستودع [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: الطبقة موجودة بالفعل 2653d992f4ef: الطبقة موجودة بالفعل الأخطاء: مرفوض: الوصول المطلوب إلى the المورد تم رفضه غير مصرح به: المصادقة مطلوبة |
يمكنك تسجيل الدخول، وتكرار محاولة الدفع.
الخاتمة
هناك العديد من الطرق التي يمكنك من خلالها الاستفادة من Docker. يجب أن يوفر لك هذا البرنامج التعليمي معلومات كافية للبدء. وبما أن Docker مشروع شائع حقًا، يمكنك العثور على العديد من التفاصيل حول الاستخدام بالإضافة إلى حالات الاستخدام المختلفة من صفحة مدونة المشروع.
يمكنك أيضًا الاطلاع على دروس Docker الأخرى لدينا لمعرفة المزيد حول ما يمكنك فعله باستخدام Docker:
- تنظيف موارد Docker - الصور، الحاويات، والأحجام
- نشر Laravel و Nginx و MySQL باستخدام Docker Compose
- تشغيل خادم VPN الخاص بك تحت Docker باستخدام OpenVPN Access Server
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.