البرمجة

فهم الفارق بين Config وContainerConfig في Docker Inspect

عند استخدام أمر “docker inspect” للحصول على معلومات حول صورة Docker، يظهر في الناتج اثنان من العناصر الهامة وهما “Config” و”ContainerConfig”. يتساءل العديد من المستخدمين عن الفرق بين هاتين العنصرين، خاصةً عندما يكون محتوى الاثنين متشابهًا بشكل كبير.

في الواقع، يكمن الاختلاف الرئيسي بينهما في قيمة “CMD”. يتم استخدام “Config” لتحديد الإعدادات التي يتم تحميلها من الصورة أثناء إنشاء الصورة نفسها، بما في ذلك إعدادات المتغيرات البيئية والمسلسلات والمستخدم وغيرها. ومع ذلك، يأتي “ContainerConfig” في اللحظة الأخيرة ويحتوي على التعليمات التي يجب تنفيذها عند تشغيل الحاوية، وهذا يتضمن أيضًا تعليمة “CMD”.

في المثال الذي تم ذكره، نرى أن “Config” يحتوي على تعليمة “CMD” تشير إلى “/bin/bash”، بينما يظهر في “ContainerConfig” تعليمة “CMD” تشير إلى “/bin/sh -c #(nop) CMD [“/bin/bash”]”. يعني ذلك أن “Config” هو الذي يأخذ تأثيرًا عمليًا عند تشغيل الحاوية، حيث يجب أن يتم تضمين التعليمة في أمر الشغل. على سبيل المثال، يمكنك تشغيل حاوية Debian بإضافة التعليمة “bash” في أمر التشغيل:

arduino
$ docker run -it debian bash

تتيح لك هذه المعلومات فهم الاختلاف بين “Config” و”ContainerConfig” وكيف يتم تأثير التعليمات المحددة في كل منها أثناء تشغيل الحاوية.

المزيد من المعلومات

لفهم الفارق بين “Config” و”ContainerConfig” في نتائج أمر “docker inspect”، يمكن أن نقدم إضاءة إضافية حول العناصر المختلفة في هذين الحقلين.

  1. Config:

    • يحتوي على إعدادات الصورة الثابتة أثناء إنشاء الصورة.
    • يتضمن إعدادات المتغيرات البيئية (Env)، والمسلسلات (Cmd)، والمستخدم (User)، والدليل الحالي (WorkingDir)، وغيرها من الإعدادات الأساسية.
    • تلك الإعدادات تمثل الحالة الابتدائية للصورة قبل تشغيل الحاوية.
  2. ContainerConfig:

    • يحتوي على التعليمات النهائية التي يجب تنفيذها عند تشغيل الحاوية.
    • يشمل التعليمات الخاصة بالCMD والتي يتم تنفيذها عند بدء تشغيل الحاوية.
    • يمكن أن يحدث هنا تغيير في بعض الإعدادات مثل CMD وEntrypoint قبل التشغيل.

عند النظر في النتيجة المقدمة في سياق “docker inspect debian”، نجد أن “Config” يحدد “/bin/bash” كتعليمة لتشغيل الحاوية، بينما “ContainerConfig” يتضمن تعليمة إضافية “/bin/sh -c #(nop) CMD [“/bin/bash”]”، ولكن تلك التعليمة تظهر أنها “(nop)”، مما يشير إلى عملية فعلية لا تأثير لها.

بالإضافة إلى ذلك، يمكن أن تكون هناك فروق أخرى في إعدادات أخرى مثل “Entrypoint”، “Volumes”، و”Labels” بين الـ”Config” و”ContainerConfig”، والتي قد تكون ذات أهمية في سياقات معينة، ولكنها تبقى ثابتة في أغلب الحالات.

باختصار، “Config” يعكس الحالة الابتدائية للصورة، بينما “ContainerConfig” يحتوي على التعليمات التي يجب تنفيذها أثناء تشغيل الحاوية، وفي حالة توافر تعليمات متعددة، يكون “Config” هو الذي يسري عند تشغيل الحاوية.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر