English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

استخدام صور Docker

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

دعونا نتعلم:

  • 1、إدارة واستخدام صورة Docker المحلية

  • 2、إنشاء صورة

إدراج قائمة الصور

يمكننا استخدام docker images لإدراج صورة على المستضيف المحلي.

w3codebox@w3codebox:~$ docker images           
مكتبة                                                 العلامة                                                 معرف الصورة                                                 تاريخ الإنشاء                                                 حجم
ubuntu                                                 14.04                                         90d5884b1ee0                                         5 days ago                                 188 MB
php                                                         5.6                                                 f40e9e0f10c8                                         9 days ago                                 444.8 MB
nginx                                                 latest                                         6f8d099c3adc                                         12 days ago                                 182.7 MB
mysql                                                 5.6                                                 f2e8d6c772c0                                                 3 weeks ago                                                 324.6 MB
httpd               أحدث              02ef73cf1bc0        3 أسابيع مضت       194.4 MB
ubuntu                                         15.10                                                 4e3b13c8a266                                         4 weeks ago                                 136.3 MB
hello-world         أحدث              690ed74de00f        6 شهرًا مضيًا        960 ب
training/webapp latest 6fae60ef3446 11 months ago 348.8 MB

شرح الخيارات المختلفة:

  • REPOSITORY:ممثل مستودع الصورة

  • TAG:علامة الصورة

  • IMAGE ID:معرف الصورة

  • CREATED:وقت إنشاء الصورة

  • SIZE:حجم الصورة

يمكن أن يكون هناك عدة TAGS في نفس مستودع، وكل منها يمثل إصدارًا مختلفًا من المستودع، مثل أن يكون لدينا في مستودع ubuntu إصدارات 15.10 و14.04 وغيرها من الإصدارات المختلفة، ونستخدم REPOSITORY:TAG لتحديد صورة مختلفة.

لذا، إذا أردنا تشغيل قارب باستخدام صورة نظام ubuntu:15.10، فإن الأمر هو:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

شرح المعلمات:

  • -i: العمليات التفاعلية.

  • -t: الطرفية.

  • ubuntu:15.10: هذا يعني بدء القارب باستخدام صورة ubuntu 15.10 كأساس.

  • /bin/bashالسطر الذي يأتي بعد اسم الصورة هو الأمر، هنا نريد Shell تفاعلي، لذا نستخدم /bin/bash.

إذا كنت ترغب في تشغيل قارب باستخدام صورة نظام ubuntu:14.04، فإن الأمر هو:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/#

إذا لم تُحدد نسخة معينة من الصورة، مثل استخدام ubuntu فقط، فإن Docker سيستخدم افتراضيًا الصورة ubuntu:latest.

الحصول على صورة جديدة

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

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: سحب من مكتبة/ubuntu
6599cadaf950: تم التنزيل كاملًا 
23eda618d451: تم التنزيل كاملًا 
f0be3084efe9: تم التنزيل كاملًا 
52de432f084b: تم التنزيل كاملًا 
a3ed95caeb02: تم التنزيل كاملًا 
الرقم المتميز: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
الحالة: تم تنزيل الصورة الجديدة لأحدث إصدار من ubuntu:13.10

بعد الانتهاء من التحميل، يمكننا استخدام هذه الصورة مباشرة لتشغيل الحاوية.

البحث عن الصور

يمكننا البحث عن الصور من موقع Docker Hub، عنوان Docker Hub هو:https://hub.docker.com/

يمكننا أيضًا استخدام الأمر docker search للبحث عن الصور. على سبيل المثال، نحتاج إلى صورة httpd كخدمة web. يمكننا البحث عن httpd باستخدام الأمر docker search للعثور على الصورة المناسبة لنا.

w3codebox@w3codebox:~$ docker search httpd

NAME: اسم مصدر صورة الصور

DESCRIPTION: وصف الصورة

OFFICIAL: هل هو إصدار رسمي من docker

stars: مثل star في Github، يعني إعجاب أو تفضيل.

AUTOMATED: بناء تلقائي.

سحب الصورة

لقد قررنا استخدام صورة httpd الرسمية من الشكل السابق، باستخدام الأمر docker pull لتنزيل الصورة.

w3codebox@w3codebox:~$ docker pull httpd
استخدام العلامة الافتراضية: أحدث
أحدث: سحب من مكتبة/httpd
سحب طبقة fs 
تنزيل كامل 
تنزيل كامل 
تنزيل كامل 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting

بعد إكمال التحميل، يمكننا استخدام هذه الصورة.

w3codebox@w3codebox:~$ docker run httpd

حذف الصورة

استخدام لحذف الصورة docker rmi أمر، مثل نحن نزيل صورة hello-world:

$ docker rmi hello-world

إنشاء صورة

عندما لا تكون الصورة التي تم تنزيلها من مستودع صور Docker مرضية لنا، يمكننا تعديل الصورة باستخدام إحدى الطريقتين التاليتين.

  • 1- تحديث الصورة من الحاوية التي تم إنشاؤها بالفعل، وتقديم هذه الصورة

  • 2- استخدام تعليمات Dockerfile لإنشاء صورة جديدة

تحديث الصورة

قبل تحديث الصورة، يجب علينا استخدام الصورة لإنشاء حاوية جديدة.

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

استخدامها داخل الحاوية المعدة للعمل apt-get update للتحديث

بعد اكتمال العمل، اكتب أمر exit للخروج من هذه الحاوية.

في هذه الأثناء، الحاوية ذات المعرف ID e218edb10161 قد تم تعديلها وفقًا لطلبنا. يمكننا استخدام الأمر docker commit لتحديد نسخة الحاوية.

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

شرح كل من الفوائد:

  • -m: معلومات الوصف المقدمة

  • -a: لتعيين مؤلف الصورة

  • e218edb10161:معرف الحاوية

  • w3codebox/ubuntu:v2: لتعيين اسم الصورة المستهدفة التي سيتم إنشاؤها

يمكننا استخدام docker images استخدام الأمر لمعاينة صورة الجديدة الخاصة بنا w3codebox/ubuntu:v2

w3codebox@w3codebox:~$ docker images
مكتبة                                                 العلامة                                                 معرف الصورة                                                 تاريخ الإنشاء                                                 حجم
w3codebox/ubuntu                                                                 v2                                                         70bf1840fd7c                                                         15 ثوانی پیش                                                         158.5 MB
ubuntu                                                 14.04                                         90d5884b1ee0                                         5 days ago                                 188 MB
php                                                         5.6                                                 f40e9e0f10c8                                         9 days ago                                 444.8 MB
nginx                                                 latest                                         6f8d099c3adc                                         12 days ago                                 182.7 MB
mysql                                                 5.6                                                 f2e8d6c772c0                                                 3 weeks ago                                                 324.6 MB
httpd               أحدث              02ef73cf1bc0        3 أسابيع مضت       194.4 MB
ubuntu                                         15.10                                                 4e3b13c8a266                                         4 weeks ago                                 136.3 MB
hello-world         أحدث              690ed74de00f        6 شهرًا مضيًا        960 ب
training/webapp     أحدث              6fae60ef3446        12 شهرًا مضيًا       348.8 MB

باستخدام صورةنا الجديدة w3codebox/ubuntu لإطلاق حاوية

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#

بناء الصورة

نستخدم الأمر docker build ، من البداية نبدأ في إنشاء صورة جديدة. لذلك، نحتاج إلى إنشاء ملف Dockerfile يتضمن مجموعة من الأوامر توضح كيفية بناء صورة Docker الخاصة بنا.

w3codebox@w3codebox:~$ cat Dockerfile 
FROM            centos:6.7
MAINTAINER                 Fisher "[email protected]"
RUN             /bin/echo 'root:123456' |chpasswd
RUN             useradd w3codebox
RUN             /bin/echo 'w3codebox:123456' |chpasswd
RUN             /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE         22
EXPOSE         80
CMD             /usr/sbin/sshd -D

كل تعليمات ستقوم بإنشاء طبقة جديدة على الصورة، وكل تعليمات يجب أن تبدأ بأحرف كبيرة.

FROM الأولى، تحديد مصدر الصورة الذي سيتم استخدامه

تعليمات RUN تخبر Docker عن تنفيذ الأوامر داخل الصورة، ما تم تثبيته......

ثم، نستخدم ملف Dockerfile، عبر الأمر docker build لبناء صورة.

w3codebox@w3codebox:~$ docker build -t w3codebox/centos:6.7 .
إرسال سياق البناء إلى دايمون Docker 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "[email protected]"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd w3codebox
......

شرح المعلمات:

  • -t محدد اسم الصورة المستهدفة التي سيتم إنشاؤها

  • . Dockerfile الملف الموجود في الدليل، يمكن تحديد مسار Dockerfile المطلق

استخدام docker images لمعرفة أن الصورة التي تم إنشاؤها بالفعل موجودة في القائمة، معرف الصورة هو 860c279d2fec

w3codebox@w3codebox:~$ docker images 
مكتبة                                         العلامة                                         صورة                                 معرف الصورة                                 إنشاء                                 حجم
w3codebox/centos                                 6.7                                         860c279d2fec                         About a minute ago                         190.6 MB
w3codebox/ubuntu                                 v2                                         70bf1840fd7c                         17 hours ago                                 158.5 MB
ubuntu                                         14.04                                         90d5884b1ee0                         6 days ago                                 188 MB
php           5.6           f40e9e0f10c8           10 days ago           444.8 MB
nginx           latest           6f8d099c3adc           12 days ago           182.7 MB
mysql           5.6           f2e8d6c772c0           3 weeks ago           324.6 MB
httpd           latest           02ef73cf1bc0           3 weeks ago           194.4 MB
ubuntu           15.10           4e3b13c8a266           5 weeks ago           136.3 MB
hello-world           latest           690ed74de00f           6 months ago           960 B
centos           6.7           d95b5ca17cc3           6 months ago           190.6 MB
training/webapp           latest           6fae60ef3446           12 months ago           348.8 MB

يمكننا استخدام الصورة الجديدة لإنشاء الحاوية

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7 /bin/bash
[root@41c28d18b5fb /]# id w3codebox
uid=500(w3codebox) gid=500(w3codebox) groups=500(w3codebox)

من فوق يمكننا رؤية أن الصورة الجديدة تحتوي على المستخدم الذي أنشأناه w3codebox.

إعداد علامة الصورة

يمكننا استخدام الأمر docker tag لاضافة علامة جديدة للصورة.

w3codebox@w3codebox:~$ docker tag 860c279d2fec w3codebox/centos:dev

docker tag ID الصورة، هنا 860c279d2fec، اسم المستخدم، اسم مكتبة الصورة (repository name) واسم العلامة الجديدة (tag).

باستخدام الأمر docker images يمكن رؤية أن الصورة ذات المعرف 860c279d2fec تحتوي على علامة إضافية.

w3codebox@w3codebox:~$ docker images
مكتبة                                                 العلامة                                                 معرف الصورة                                                 تاريخ الإنشاء                                                 حجم
w3codebox/centos                                        6.7                                                 860c279d2fec                                                 5 hours ago                                                 190.6 MB
w3codebox/centos                                        dev                                                 860c279d2fec                                                 5 hours ago                                                 190.6 MB
w3codebox/ubuntu                                        v2                                                 70bf1840fd7c                                                 22 hours ago                                                 158.5 MB
ubuntu                                                14.04                                                 90d5884b1ee0                                                 6 days ago                                                 188 MB
php                                                   5.6                                                 f40e9e0f10c8                                                 10 days ago                                                 444.8 MB
nginx                                                 latest                                                 6f8d099c3adc                                                 13 days ago                                                 182.7 MB
mysql                                                 5.6                                                 f2e8d6c772c0                                                 3 weeks ago                                                 324.6 MB
httpd               أحدث              02ef73cf1bc0        3 أسابيع مضت       194.4 MB
ubuntu              15.10               4e3b13c8a266        5 أسابيع مضت       136.3 MB
hello-world         أحدث              690ed74de00f        6 شهرًا مضيًا        960 ب
centos              6.7                 d95b5ca17cc3        6 شهرًا مضيًا        190.6 MB
training/webapp     أحدث              6fae60ef3446        12 شهرًا مضيًا       348.8 MB