‫متطلبات هذه المحاضرة هي أنك تعرف كيفية بدء حاوية من المحاضرات السابقة.
‫انتهينا للتو من المحاضرة الأخيرة نتحدث عن رؤية ما يحدث في حاوية من الخارج.
‫هذا كله يتعلق بالدخول في حاوية للعبث بالداخل. هناك بعض الأوامر التي يمكننا استخدامها.
‫الأول هو تشغيل الحاوية بـ -it.
‫سنتحدث عن كيفية عمل -it للحصول على غلاف داخل الحاوية.
‫ثم لتشغيل الحاويات التي تريد تشغيل عملية ثانية ، يمكنك أيضًا استخدام الحاوية
‫exec ، وسنعرض عدة أمثلة على ذلك.
‫ثم على طول الطريق ، سنذكر في الواقع بعض الاختلافات بين توزيع Linux العادي ،
‫مثل Ubuntu ، للتثبيت على جهاز افتراضي أو على جهاز.
‫ثم كيف تبدو توزيعات Linux تلك داخل الحاوية.
‫هيا بنا نبدأ.
‫النظر إلى الحاوية من الخارج مفيد جدًا في بعض الأحيان.
‫لكن أحد الأسئلة الأولى التي يسألني الناس غالبًا هو كيف يمكنني الدخول إلى الحاوية وفعل الأشياء
‫الموجودة فيها مباشرة من سطر الأوامر.
‫أحيانًا يخلط الناس بين هذا وبين الرغبة في وجود خادم SSH داخل الحاوية الخاصة بهم حتى يتمكنوا من الدخول
‫إليها.
‫لكننا في الواقع لا نحتاج إلى القيام بذلك لأن لدينا عدة أوامر تحت تصرفنا تسمح لنا بإدخال
‫غلاف داخل الحاوية نفسها أثناء تشغيلها.
‫الأول هو مجرد أمر تشغيل حاوية عامل الإرساء.
‫لكننا سنقوم بتحديد بعض الخيارات الإضافية.
‫سنفعل a -it.
‫إن -it هو في الواقع خياران منفصلان.
‫إذا عرضت المساعدة بسرعة حقيقية ، يمكنك أن ترى أن t يعطينا في الواقع ty زائفًا أو موجهًا مشابهًا
‫لما قد تحصل عليه من خلال ssh.
‫ثم إذا مررنا لأعلى ، فهذا حقًا ما يسمح لنا
‫بالحفاظ على هذه الجلسة مفتوحة حتى نتمكن من الاستمرار في تشغيل المزيد من الأوامر.
‫إذا قمنا بتشغيل حاوية عامل إرساء ، فقمنا بتشغيل nginx آخر. دعنا نسميها بالوكالة.
‫ثم يتعين علينا تحديد أمر بديل.
‫إذا كنت تتذكر في بداية هذا القسم حيث تحدثنا عن تنسيق سطر أوامر عامل الإرساء
‫، عندما تقوم بتشغيل حاوية عامل إرساء ، كما ترون من خلال المساعدة ، هنا في النهاية ، بعد الصورة ، لديك
‫أمر اختياري ووسائط اختيارية يمكنك إرسالها إلى هذه الحاوية الجديدة التي أنت على
‫وشك البدء في إخبارها بما يجب تشغيله. تحتوي الصورة على أمر افتراضي فيه سنرى لاحقًا كيفية
‫تكوينه.
‫ولكن إذا أردت تغيير ما تم تشغيله عند بدء التشغيل ، فيمكنك القيام بذلك مباشرة من خط التشغيل.
‫دعنا نقول فقط باش. لأن Bash هي إحدى الأصداف الشائعة التي ستجدها عادةً
‫في حاوية ستمنحك صدفة للعمل بها.
‫انظر إلى ذلك. أنا في موجه.
‫ستلاحظ موجهاتي تقول الجذر وهو المستخدم الذي بدأت الحاوية به. هذا لا يعني في الواقع أنني جذر على
‫المضيف.
‫هذا يعني فقط أنني أتصرف كجذر في الحاوية.
‫هذا الرقم بعده هو في الواقع معرف الحاوية.
‫إذا قمت بإجراء ls -al ، فسأحصل على قائمة كاملة بكل ما أكون فيه.
‫ويمكنك أن ترى أنني في المسار الجذر لنظام الملفات داخل الحاوية.
‫أنا في الواقع أبحث في جميع الملفات الموجودة داخل الحاوية والتي تستند إلى صورة Nginx.
‫من هنا ، يمكنني تغيير ملفات التكوين ، ويمكنني
‫تنزيل الحزم من الإنترنت والقيام بأي شيء إداري مشترك يمكنك القيام
‫به من غلاف عادي.
‫للخروج من الغلاف عند الانتهاء ، سأقوم بكتابة exit ، كما تفعل مع أي قذيفة والآن هذه الحاوية
‫قد توقفت.
‫إذا قمنا بالفعل بعمل حاوية لرسو السفن ، فلن تراها هناك.
‫تذكر ، لقد أطلقنا عليها اسم الوكيل.
‫لذلك كان علي أن أفعل a -a.
‫وهي هناك. انظر الآن الأمر الذي تم تشغيله. الأمر الافتراضي لحاوية Nginx هو تشغيل
‫برنامج Nginx نفسه.
‫ولكن عندما كتبنا آخر أمر لدينا ، قمنا بتغيير البرنامج الافتراضي ليكون بالفعل
‫Bash ، وهو ما أعطانا غلافنا. عندما خرجنا من القذيفة ، توقفت الحاوية. لأن الحاوية s فقط طالما تم تشغيل الأمر
‫الذي تم تشغيله عند بدء التشغيل. نظرًا لأننا قمنا بتغييرها إلى Bash ، فما عليك سوى الخروج
‫من Bash وإنهائها
‫الآن ، ماذا لو استخدمت توزيعة كاملة من Linux بدلاً من فعل Nginx. لنقم بعمل Ubuntu
‫كامل.
‫في الواقع ستقوم بتنزيل صورة Ubuntu وتضعني في موجه هذه الحاوية الجديدة.
‫إذا سبق لك استخدام Ubuntu ، فأنت تعرف مدير الحزم المناسب.
‫لذا يمكنني استخدام ذلك هنا. تمامًا كما أفعل في خادم Ubuntu القياسي. يمكنني بالفعل تثبيت
‫شيء ما apt-get install -y curl.
‫الشيء في Ubuntu والتوزيعات الأخرى داخل الحاوية هو أنها عادة ما تكون ضئيلة للغاية.
‫سيحتوي قرص مضغوط مباشر أو تنزيل لـ ISO من Ubuntu والذي عادة ما تضعه على جهاز افتراضي على الكثير
‫من البرامج المثبتة بشكل افتراضي من حاوية Ubuntu التي تعد في الحقيقة إصدارًا صغيرًا جدًا
‫من Ubuntu يمكنك دائمًا إضافة المزيد برنامج مع مدير الحزم المناسب.
‫الآن هذه الحاوية قيد التشغيل مثبتة على curl ويمكنني استخدامها تمامًا كما أفعل على جهاز محلي.
‫بمجرد أن أخرج من القشرة مرة أخرى ، ستوقف الحاوية بالفعل. حاوية عامل ميناء
‫ls. لاحظت أنني لا أراها. هناك صورة Ubuntu التي قمنا بتشغيلها للتو.
‫إذا بدأت هذه الحاوية مرة أخرى ، فسيتم تثبيت الضفيرة فيها.
‫ولكن إذا قمت بإنشاء حاوية جديدة من صورة Ubuntu ، فلن يتم تثبيت سطر أوامر curl في تلك الحاوية
‫المختلفة.
‫ماذا لو أردنا إعادة تشغيل تلك الحاوية وإعادة Bash مرة أخرى.
‫يمكننا استخدام أمر بدء حاوية عامل الإرساء.
‫ستلاحظ أن الأمر مختلف قليلاً عندما نبدأ حاوية موجودة ، لكنها تشبه
‫الحاوية ... إنه مجرد ذكاء اصطناعي.
‫ثم اسم حاويتنا أوبونتو. ستلاحظ أننا عدنا إليه فورًا ويمكنني
‫تجعيد Google مرة أخرى وهو يعمل.
‫إذا خرجت ، أوقفها مرة أخرى.
‫ماذا لو كنت أرغب بالفعل في رؤية الغلاف داخل حاوية قيد التشغيل تعمل بالفعل على
‫شيء مثل MySQL أو Nginx.
‫يمكننا أن نفعل ذلك أيضا.
‫وذلك باستخدام الأمر exec. حاوية عامل ميناء exec.
‫ويمكنك أن ترى أن لدينا بعض الخيارات هنا.
‫والأكثر شيوعًا هو ... لنفترض أنني أريد الانتقال إلى حاوية MySQL لأنني بحاجة إلى
‫القيام ببعض الأمور الإدارية على MySQL نفسها.
‫يمكنني القيام بذلك مرة أخرى ثم اسم الحاوية. ثم البرنامج الذي أريد تشغيله.
‫وفي هذه الحالة مرة أخرى ، إنه Bash وأنا الآن في الحاوية مع MySQL.
‫يمكنني فعلاً عمل ps aux داخل الحاوية التي تسرد العمليات. سيُظهر لي هذا بالطبع برنامج MySQL الخفي
‫الذي يعمل في الخلفية ، بالإضافة إلى عملية Bash التي أنا جالس فيها حاليًا
‫، بالإضافة إلى أمر ps الذي قمت بتشغيله
‫للتو. في هذه الصدفة ، يمكنني القفز إلى MySQL نفسها باستخدام سطر أوامر mysql. ستلاحظ عندما أخرج من Bash
‫shell وأقوم بعمل ls ، فإن MySQL لا تزال قيد التشغيل. نظرًا لأن exec حاوية عامل الإرساء تشغل فعليًا عملية
‫إضافية على حاوية قيد التشغيل موجودة ، فلن تؤثر
‫على عملية الجذر لخادم MySQL. لنجرب واحدة أخرى.
‫كما ترى هنا ، يعد هذا مفيدًا جدًا للقفز إلى الحاويات عندما تحتاج إلى استكشاف الأخطاء
‫وإصلاحها أو عندما تحتاج إلى تغيير شيء ما قليلاً على نظام قيد التشغيل ، وكذلك استخدام حاويات من توزيعات
‫مختلفة لمنحك البيئة التي كنت ستحصل عليها إذا كان لديك آلة كاملة مثل Ubuntu أو جبال الألب.
‫الآن ما هو جبال الألب؟ لم نذكر جبال الألب من قبل. Alpine هو توزيعة أخرى لنظام Linux ، لكن
‫Alpine مصمم ليكون صغيرًا جدًا.
‫حجمها 5 ميغا بايت فقط.
‫إذا قمت بعمل عامل إرساء لسحب جبال الألب ، فسيؤدي ذلك إلى سحب أحدث صورة لجبال الألب وإذا قمت بعمل صورة لرسو
‫السفن ، يمكنك في الواقع رؤية مدى صغر صورة جبال الألب مقارنةً بـ Ubuntu.
‫الشيء الرائع في Alpine هو أنه يأتي أيضًا مع مدير الحزم الخاص به.
‫لذلك سترى Alpine كخيار في Docker Hub كثيرًا في القسم التالي عندما ننتقل إلى الصور و Docker
‫Hub.
‫لكن في الوقت الحالي ، لنقم بعمل قذيفة باش داخل جبال الألب. حاوية عامل ميناء Run -it alpine bash.
‫الآن ماذا حدث هنا للتو؟
‫لماذا دخلت هناك؟
‫يخبرني أنه بدأ عملية الحاوية وتسبب في عدم العثور على ملف bash القابل
‫للتنفيذ في المسار. وما يعنيه ذلك حقًا هو أن Bash ليس في الحاوية.
‫ويعود هذا إلى مفهوم أنه لا يمكننا تشغيل الأشياء إلا في الحاوية الموجودة بالفعل في
‫صورتها عند
‫بدء تشغيلها.
‫أو ربما شيء أضفته لاحقًا من خلال أوامر exec أو تشغيل.
‫لكن في هذه الحالة ، كيف سأكون في صورة جبال الألب؟
‫حسنًا ، جبال الألب صغيرة جدًا لدرجة أنها لا تحتوي على Bash بالفعل. ولكن لديها sh. لذا يمكننا استبدال الأمر بـ
‫sh ، وهو ليس مميّزًا تمامًا مثل Bash ولكنه يقودنا مباشرة إلى الحاوية.
‫إذا كنت تريد البحث في Alpine Linux على الإنترنت ، فستعلم أن مدير الحزم الخاص
‫به هو apk ويمكننا بالفعل استخدام ذلك لتثبيت Bash إذا كنا بحاجة إليه حقًا.
‫فقط لتلخيص سريع حقيقي لما تعلمناه في هذا الدرس.
‫لقد تعلمنا عن الخيار -it لتشغيل الحاوية ، والذي يعطينا ما يعادل قذيفة تفاعلية
‫للقيام بالفعل بأشياء في الحاوية كما لو كنا في خادم من نوع ما.
‫ثم تعلمنا أمرًا جديدًا
‫لـ docker container exec باستخدام الأمر الذي يقوم بنفس الشيء تمامًا مثل run ، لكنه يفعل
‫ذلك على حاوية موجودة لا تعمل ولا تبدأ حاوية جديدة.
‫وأخيرًا ، تعلمنا قليلاً عن Alpine وكيف يختلف ذلك عن توزيعات Linux الرئيسية
‫وكيف أنها في الواقع بحجم 4 ميغابايت ومثالية لصور الحاويات.