مقدمة
Docker أداة شائعة لإنشاء حاويات، تُستخدم لتزويد تطبيقات البرامج بنظام ملفات يحتوي على كل ما تحتاجه للتشغيل. يضمن استخدام حاويات Docker ثبات أداء البرنامج أينما وُضع، بفضل اتساق بيئة تشغيله. في هذا البرنامج التعليمي، سنقدم لمحة عامة موجزة عن العلاقة بين صور Docker وحاويات Docker. بعد ذلك، سنتناول بالتفصيل كيفية تشغيل الحاويات وبدء تشغيلها وإيقافها وإزالتها.
ملخص
يمكننا اعتبار صورة Docker قالبًا معدنيًا عاديًا يُستخدم لإنشاء حاويات Docker. تبدأ الصور عادةً بنظام ملفات جذر وتضيف تغييرات نظام الملفات ومعلمات التنفيذ المقابلة لها في طبقات أنيقة للقراءة فقط. بخلاف توزيعات Linux النموذجية، تحتوي صورة Docker عادةً فقط على المعدن المعدني اللازم لتشغيل التطبيق. الصور عديمة الحالة ولا تتغير. بدلاً من ذلك، تشكل نقطة البداية لحاويات Docker. يتم تنشيط الصور باستخدام أمر docker run، الذي ينشئ حاوية عن طريق إضافة طبقة قراءة وكتابة أعلى الصورة. يُعرف هذا المزيج من طبقات القراءة فقط الموضوعة أعلى طبقة القراءة والكتابة هذه باسم نظام ملفات الاتحاد. عند إجراء تغيير على ملف في حاوية قيد التشغيل، يتم نسخ الملف من مساحة القراءة فقط إلى طبقة القراءة والكتابة، حيث يتم تطبيق التغييرات. يخفي الإصدار الموجود في طبقة القراءة والكتابة الملف الأصلي ولكنه لا يحذفه. توجد التغييرات في طبقة القراءة والكتابة فقط في مثيل حاوية منفصل. عند حذف الحاوية، سيتم فقدان أي تغييرات ما لم يتم اتخاذ خطوات للحفاظ عليها.
كيفية العمل مع حاويات Docker
- إنشاء حاويتين Docker
- أعد تشغيل الحاوية الأولى.
- حذف كلا الحاويتين.
العمل مع الحاويات
في كل مرة تستخدم الأمر تشغيل Docker عند استخدامه، يُنشئ حاوية جديدة من الصورة التي حددتها. قد يكون هذا مُربكًا، لذا دعونا نلقي نظرة على بعض الأمثلة:
الخطوة 1: إنشاء حاويتين
أمر التنفيذ عامل ميناء يؤدي الأمر التالي إلى إنشاء حاوية جديدة باستخدام صورة Ubuntu الأساسية. -ت إنه يعطينا محطة و -أنا يسمح لنا بالتفاعل معه. نتبع الأمر الافتراضي في ملف Docker الخاص بنسخة Ubuntu الأساسية، سحقنحن نعتمد عليه ليتركنا في قوقعة.
docker run -ti ubuntuسيتغير سطر الأوامر لإظهار أننا موجودون داخل الحاوية باعتبارنا المستخدم الجذر، متبوعًا بمعرف الحاوية المكون من 12 حرفًا.
root@11cc47339ee1:/#لقد أجرينا تغييرًا في انعكاس النص في المجلد /tmp نقوم بإنشاء حاوية، ثم نستخدمها قطة نستخدمه للتأكد من أنه تم حفظه بنجاح.
echo "Example1" > /tmp/Example1.txt
cat /tmp/Example1.txtOutput
Example1
الآن دعونا نخرج من الحاوية.
exitلا تعمل حاويات Docker فور اكتمال الأمر الذي تُصدره، لذا توقفت حاويتنا عند الخروج من غلاف bash. إذا كان الأمر ملاحظة: إذا قمنا بتشغيل الأمر لإظهار الحاويات قيد التشغيل، فلن نرى الأمر الخاص بنا.
docker psOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESإذا كان العلم -أ أضف الأمر الذي يعرض جميع الحاويات، المتوقفة أو قيد التشغيل، وستظهر الحاوية الخاصة بنا في القائمة:
docker ps -aOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11cc47339ee1 ubuntu "/bin/bash" 6 minutes ago Exited (127) 8 seconds ago small_sinoussiعند إنشاء الحاوية، تم تزويدها بمعرف حاوية واسم مُولّد عشوائيًا. في هذه الحالة، 11cc47339ee1 معرف الحاوية و صغير_الجيبية إنه اسم تم إنشاؤه عشوائيًا. ps -a هذه القيم، بالإضافة إلى الصورة التي بُنيت منها الحاوية (أوبونتو)، ووقت إنشائها (قبل ست دقائق)، والأمر الذي شُغّلت فيه (/bin/bash). يُظهر المُخرَج أيضًا حالة الحاوية (خروج) والوقت الذي كانت فيه على هذه الحالة (قبل ست ثوانٍ). إذا كانت الحاوية لا تزال قيد التشغيل، فسنرى حالة "قيد التشغيل"، متبوعةً بالوقت الذي كانت تعمل فيه.
إذا قمنا بتشغيل نفس الأمر مرة أخرى، فسيتم إنشاء حاوية جديدة تمامًا:
docker run -ti ubuntuيمكننا معرفة أنها حاوية جديدة لأن المعرف مختلف على سطر الأوامر، وعندما نبحث عن ملف Example1 الخاص بنا، لا نعثر عليه:
cat /tmp/Example1Output
cat: /tmp/Example1: No such file or directoryقد يبدو هذا وكأن البيانات قد اختفت، لكنها لم تختفِ. الآن، سنخرج من الحاوية الثانية لنتأكد من أنها والحاوية الأولى التي تحتوي على الملف الذي أنشأناه لا تزالان على النظام.
exitعندما نقوم بإدراج الحاويات مرة أخرى، يظهر كلاهما:
docker ps -aOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e4341887b69 ubuntu "/bin/bash" About a minute ago Exited (1) 6 seconds ago kickass_borg
11cc47339ee1 ubuntu "/bin/bash" 13 minutes ago Exited (127) 6 minutes ago small_sinoussiالخطوة 2: إعادة تشغيل الحاوية الأولى
لإعادة تشغيل حاوية موجودة، نستخدم أمر البدء مع العلامة -a للاتصال بها والعلامة -i لجعلها تفاعلية، متبوعةً بمعرف الحاوية أو اسمها. تأكد من استبدال معرف الحاوية في الأمر التالي:
docker start -ai 11cc47339ee1نجد أنفسنا مرة أخرى عند موجه bash للحاوية وعندما نضغط على الملف الذي أنشأناه سابقًا، فإنه لا يزال موجودًا هناك.
cat /tmp/Example1.txtOutput
Example1الآن يمكننا الخروج من الحاوية:
exitيوضح هذا الناتج أن التغييرات التي أُجريت داخل الحاوية تستمر عند إيقافها وتشغيلها. لا يُزال المحتوى إلا عند إزالة الحاوية. يوضح هذا المثال أيضًا أن التغييرات اقتصرت على الحاوية نفسها. عند تشغيل الحاوية الثانية، عكست الحالة الأصلية للصورة.
الخطوة 3: حذف كلا الحاويتين
لقد أنشأنا حاويتين، وسنُنهي شرحنا الموجز بإزالتهما. يتيح لك أمر docker rm، الذي يعمل فقط على الحاويات المتوقفة، تحديد اسم أو مُعرّف حاوية واحدة أو أكثر، حتى نتمكن من إزالتها باتباع الخطوات التالية:
docker rm 11cc47339ee1 kickass_borgOutput
11cc47339ee1
kickass_borgلقد اختفت الآن الحاويتان وأي تغييرات أجريناها داخلهما.
نتيجة
نحن نلقي نظرة فاحصة على الوصفة. تشغيل Docker لقد رأينا كيف يُنشئ حاوية جديدة تلقائيًا في كل مرة يتم تشغيله. كما رأينا كيفية العثور على حاوية متوقفة، وتشغيلها، والاتصال بها. إذا كنت ترغب في معرفة المزيد حول إدارة الحاويات، فقد يهمك دليل تسمية حاويات Docker: 3 نصائح للمبتدئين.









