‫حسنًا ، لنفعل بعض الأشياء الممتعة. في هذه المحاضرة ، سنتحدث بسرعة عن الفرق
‫بين الصور والحاويات. ثم سنقفز مباشرة للعب
‫مع الحاوية. سنبدأها ، وسنتوقف ونزيلها
‫، ونقوم ببعض الوظائف الإدارية الشائعة. ثم سنقوم بفحص سجلات الحاوية والعمليات
‫التي تعمل في الحاوية الخاصة بنا.
‫لذا قبل أن ننتقل بسرعة حقيقية ، من الجيد معرفة الفرق بين الصورة والحاوية. الصورة هي الثنائيات والمكتبات
‫وكود المصدر التي تشكل جميعها تطبيقك. الحاوية هي مثيل قيد التشغيل
‫لتلك الصورة.
‫الآن ، يمكن أن يكون لديك العديد من الحاويات التي تستند جميعها إلى نفس الصورة. في هذه المحاضرة ، سنستخدم خادم
‫الويب Open Source Nginx. لذلك سنبدأ حاوياتنا بناءً
‫على صورة Nginx هذه. نحصل على جميع صورنا من السجلات. السجلات تشبه نوعًا ما هو GitHub
‫بالنسبة إلى الكود المصدري. سجلات الصور مخصصة لصور الحاوية والسجلات الافتراضية لـ Docker هي Docker Hub ، والتي
‫يمكنك التحقق منها في المركز.
‫عامل ميناء. كوم.
‫سنلعب أكثر مع ذلك لاحقًا.
‫لكن في الوقت الحالي يجب أن تدرك أن هذين الأمرين مختلفان تمامًا ، وفي القسم التالي
‫سننتقل إلى الصور.
‫لكن الآن دعونا نركز على الحاويات.
‫حسنًا ، سنبدأ الآن حاوية جديدة ونستخدم بعض أوامر Docker لإدارة تلك الحاوية.
‫تشغيل حاوية عامل
‫ميناء نشر 80:80 nginx.
‫لا تقلق إذا كنت لا تعرف معنى كل هذا. سنستعرض كل ذلك في دقيقة واحدة.
‫سوف تضغط دخول ...
‫قم بالتبديل إلى المتصفح الخاص بي ، واكتب localhost.
‫هناك نذهب.
‫خادم Nginx الخاص بنا يستمع. يمكنني النقر على تحديث عدة مرات وسترى إدخالات
‫السجل تحدث في سطر الأوامر هنا.
‫الآن ماذا فعلنا للتو؟ في الخلفية ، بحث
‫محرك Docker بالفعل عن صورة تسمى nginx ، وقام بسحب أحدث صورة
‫لـ nginx من Docker Hub. ثم بدأت كعملية جديدة في حاوية جديدة لنا لاستخدامها.
‫يعرض الجزء المنشور من الأمر المنفذ المحلي 80 الخاص بي على جهازي المحلي ويرسل كل حركة
‫المرور منه إلى الملف القابل للتنفيذ الذي يعمل داخل تلك الحاوية على المنفذ 80.
‫ونظرًا لأن Nginx هو خادم ويب ، فسيتم تعيينه افتراضيًا إلى المنفذ 80 وتقوم حركة المرور بإعادة التوجيه
‫تلقائيًا عبر المتصفح إلى مضيفي المحلي وإلى تلك الحاوية.
‫لكننا لا نريد دائمًا تشغيل هذا الشيء في المقدمة داخل سطر الأوامر.
‫لذلك دعونا نضغط على Control c وسأضرب السهم لأعلى وسأقوم بعمل نسخة احتياطية قليلاً وأكتب منفصلة.
‫الآن يُخبر فصل Docker تشغيله في الخلفية.
‫ونستعيد معرف الحاوية الفريد لحاويتنا.
‫وفي كل مرة تقوم فيها بتشغيل حاوية جديدة ، تحصل على معرف فريد جديد.
‫لذلك إذا عدنا إلى متصفحنا وقمنا بالضغط على التحديث عدة مرات ، يمكنك أن ترى أنه لا يزال قيد التشغيل.
‫لذلك دعونا نقوم بأمر لسرد حاوياتنا. وسترى الحاوية التي
‫لا تزال
‫تعمل هنا.
‫إنها مطابقة لمعرف الحاوية للأمر الذي قمنا بتشغيله للتو. سترى الحاوية لا تزال قيد التشغيل التي بدأناها
‫للتو.
‫لذلك دعونا نوقف هذه الحاوية بسرعة حقيقية.
‫توقف حاوية عامل الميناء. ثم معرف الحاوية. بالنسبة لمعرف الحاوية ، لا يتعين علي سوى
‫كتابة الأرقام القليلة الأولى ، وهو ما يكفي ليكون فريدًا ، وقد أوقفته.
‫الآن إذا قمت بعمل حاوية لرسو السفن ، فلن تلاحظ أي شيء يظهر.
‫لذا فإن الأمر ls يظهر فقط بشكل افتراضي حاويات قيد التشغيل.
‫إذا قمت بإجراء ls -a ، سأستعيد اثنين. الآن ، لماذا أحصل على اثنين؟
‫عندما ركضنا في كل مرة يتم فيها تشغيل أمر Docker container ، فإنه يبدأ حاوية جديدة
‫من صورة Nginx تلك. ستلاحظ على اليمين هنا أن هناك هذه الأسماء العشوائية. لم نستخدم هذه.
‫كيف حصلنا على هؤلاء؟
‫لذلك يتم دائمًا إنشاء معرف الحاوية لنا.
‫والاسم مطلوب أيضًا أن يكون فريدًا.
‫وإذا لم نحدده ، فسيتم إنشاؤه لنا. يمكننا دائمًا تسمية شيء ما بأنفسنا ، ولكن
‫إذا سمحنا له باختيار شيء خاص به ، فهو في الواقع جزء صغير مثير للاهتمام من التاريخ
‫حول Docker هو أنهم يمتلكون هذا الاسم منذ سنوات حتى يتم إنشاء هذا الاسم عشوائيًا من قائمة
‫الصفات مفتوحة المصدر وألقاب المتسللين أو العلماء البارزين.
‫ومن المضحك في بعض الأحيان أن تحصل على بعض الأسماء الغريبة حقًا هناك.
‫لذلك دعونا ننشئ واحدة جديدة. تشغيل حاوية عامل ميناء. ضع في نشرتنا
‫وفصلنا.
‫لكن هذه المرة سنحدد اسمًا. سأسميها مضيف الويب nginx.
‫والآن إذا قمت بعمل حاوية docker ls -a ، فسترى ثلاث حاويات.
‫الذي بدأناه للتو. يحتوي على اسم مضيف ويب ثم الاسمين اللذين بدأناهما
‫مسبقًا ثم توقفنا.
‫نظرًا لأننا لم نعد نقوم بتشغيل هذا في المقدمة بعد الآن ، فلا يمكننا رؤية السجلات.
‫لذا دعنا نعود إلى متصفحنا وسأقوم بالضغط على زر التحديث بضع مرات لإنشاء بعض السجلات.
‫ثم عد إلى المحطة الطرفية الخاصة بنا وسأفعل مضيف ويب سجلات حاوية عامل الإرساء. وسوف يبصق أحدث السجلات في مضيف الويب.
‫هناك خياران تريد تشغيلهما في أمر السجلات لجعله يتبع السجلات تلقائيًا أو
‫يمكنه فقط التقاط أحداث السجل القليلة الأخيرة حتى لا ينتهي بك الأمر بإلقاء ملف
‫السجل بالكامل على شاشتك .
‫يمكننا أيضًا استخدام بعض أوامر حاوية عامل الإرساء الأخرى للتحقق من تلك الحاوية قيد التشغيل. يمكننا تجربة أعلى حاوية عامل
‫الميناء. يمكنك رؤية المساعدة هناك.
‫يتيح لنا ذلك معرفة أننا بحاجة إلى تحديد مضيف اسم الحاوية. يمكنك أن ترى أن هذه هي العملية الجارية داخل
‫الحاوية.
‫الآن بالنسبة لـ Nginx ، لسنا بحاجة إلى معرفة كل هذا بالضرورة ، لكن من المثير
‫للاهتمام ملاحظة
‫أنه مع Nginx ، توجد بالفعل عملية رئيسية ومن ثم تنتج عمليات عاملة بناءً على التكوين.
‫مرة أخرى ، يمكننا دائمًا كتابة حاوية عامل الإرساء و- مساعدة في الحصول على قائمة بجميع الأوامر التي يمكننا
‫تجربتها على تلك الحاوية.
‫الآن دعنا ننظف ما فعلناه للتو.
‫لذلك دعونا نقوم بعمل حاوية عامل إرساء.
‫ls -a ، وهذا سوف يسرد جميع حاوياتي الثلاثة.
‫الآن ، سأقوم بإزالة الثلاثة في نفس الوقت.
‫في بعض الأحيان ، يمكن أن تأخذ أوامر Docker الفرعية قيمًا متعددة.
‫لذلك في هذه الحالة يمكنني عمل حاوية عامل إرساء rm وبعد ذلك يمكنني تحديد 63f 690 والقصيدة.
‫يصيح 0de.
‫لذا حصلت على خطأ. ماذا حدث هنا للتو؟
‫حسنا. تم حذف الأولين بأمان.
‫الثالث يخبرني أنه لا يمكنني إزالة حاوية قيد التشغيل لأنها تدبير أمان.
‫يتأكد من أنك لا تزيل عن طريق الخطأ العملية الفعلية التي لا تزال قيد التشغيل. إذا قمت بعمل حاوية عامل إرساء ، فسترى
‫أنه لا يزال لدينا واحد قيد التشغيل.
‫الآن يمكنني فعلاً إيقاف حاوية عامل إرساء لإيقافها أولاً ثم إزالتها.
‫لكنني سأقوم بعمل حاوية عامل إرساء rm -f للقوة و 63 f. وها نحن ذا.
‫الآن إذا قمت بعمل حاوية رصيف ls -a سترى أنه لا يوجد شيء هناك.
‫لذا الآن قمنا بتنظيف الفوضى.
‫نعم.
‫لذلك في غضون دقائق معدودة ، تمكنا من استخدام أمر واحد لتنزيل خادم ويب Nginx
‫وتشغيله بتكوين افتراضي يستمع إلى المنفذ 80 ، ثم تمكنا من إنشاء العديد منها ، واللعب
‫بالسجلات ثم إزالة حاويات لتنظيف ما فعلناه.