من الامن الى خط التجميع المرآة، قائمة عامل الميناء من أفضل الممارسات ونماذج مضادات

الكاتب | تيموثي Mugayi

المترجم | الغضروف المفصلي، ذبيان | yugao

صورة الغلاف | CSDN دفع تحميل من الصين البصرية

أنتجت | CSDN (ID: CSDNnews)

أكثر من مرة استخدام لعامل الميناء، ونحن لا تبالي الأعمال الداخلية. عامل الميناء تبدأ وحدها وعاء والسماح للتطبيق تعمل بشكل جيد، وهذا لا يعني أنك حققت حلا جيدا. في بعض الأحيان، نظرا لضيق الوقت، ونحن يمكن نسخ ولصق فقط عامل الميناء مرآة، لا أحد يمكن أن نفهم حقا تفاصيل التنفيذ والفروق الدقيقة في كيفية بناء صورة عامل الميناء.

في هذه المقالة، سوف نستكشف عامل الميناء أفضل الممارسات ونماذج مضادات. الناس المضادة للنموذج للمشاكل حلول عامة متكررة، وهذه البرامج غير فعالة، أو حتى تعويض كامل الفوائد المترتبة على كومة التكنولوجيا عامل الميناء.

دعونا نلقي نظرة على ما هو نهجنا غير مرغوب فيه.

نحن بحاجة إلى التسمية

التسمية أمر ضروري، ونحن بحاجة لنقل المعلومات حول عامل الميناء الذي يتجلى في التسمية. يمكنك عامل الميناء تسميات ID صورة اسم آخر. بوابة بمناسبة تسمية خاصة هي المسؤولة عن تقديم، وتسمية عامل الميناء وبالمثل، يمكنك إضافة نسخة عامل الميناء من المرايا على نقاط مختلفة في الوقت المناسب. ننسى لعب البطاقة هي شيء صغير، ولكن ذلك سوف يجلب بعض السلبيات، وتحديدا، إذا لم يتم تحديد العلامة، سيتم وضع علامة على الصورة الافتراضية كما أبعد تقدير.

من your_image_name: آخر

إذا كنت في كثير من الأحيان تنفيذ هذه العملية، فمن المرجح أن المرآة ليست آخر، قد يشير إلى إصدار أقدم. ولذلك، استخدم التسمية الملائمة والامتثال لمعايير التحكم في الإصدار، مثل التحكم في الإصدار الدلالي. وبهذه الطريقة، يمكن للمستخدمين ضمان التوافق عامل الميناء عامل الميناء صورة طبق الأصل من التاريخ والوقت، ولكن أيضا هناك خطط لاستخدام الإصدار الصحيح.

وهناك أيضا يجب تجنب هذا الوضع. يمكنك الاستفادة من أحدث التسمية الافتراضية (مثل من python3: تقدير)، أحدث مقتطف من عامل الميناء مستودع مرآة. للوهلة الأولى، وهذا يبدو وكأنه فكرة جيدة، ولكن هناك بعض الآثار الجانبية غير متوقع: كل طلب جديد يكون ممكنا لاستخلاص وبناء مختلفة تماما عامل الميناء الصورة السابقة. وعامل الميناء مرآة لمعرفة سبب الضرر يصبح من الصعب جدا، لأن المرآة يجب أن يكون غير قابل للتغيير. ولذلك، فإنني أوصي بشدة استخدام تسمية محددة لتسمية مرآة (على سبيل المثال: python3: 1.0.1). هذا الأسلوب يضمن أن Dockerfile بك تبقى على حالها.

تشغيل في نفس الحاوية المزيد من الخدمات

على الرغم من أنك يمكن تشغيل خدمات متعددة في نفس الحاوية، ولكن أنا لا ننصح بذلك لسببين. عند استخدام خدمة عامل الميناء، ينبغي علينا أن نسعى إلى الحفاظ على وحدة المسؤولية. ونتيجة لأفضل الممارسات، تخدم كل منها ما يصل التطبيق يجب أن تدار في حاويات منفصلة، تأكد من يتم تعبئتها كل وظائف منفصلة في وعاء منفصل صورة منفصلة.

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

وبالإضافة إلى ذلك، فإن خدمات متعددة في حاوية واحدة يزيد من صعوبة إدارة الأمن. مرآة ضخمة قد يقلل من معدل CI / CD، عليك أن تكون حذرا.

استخدام المرآة لLABEL تصنيف

لا يمكن أن يقال هذا نماذج مضادات، ولكن أعتقد يستحق الذكر. لقد لاحظت شيئا واحدا عند التعامل مع مجموعة متنوعة من مرآة عامل الميناء: في بعض الأحيان على صورة الخالق لا تستخدم LABEL معيل العلامة. يمكن تقديم التسمية في حالة معكوسة مجال المؤلف، عندما تنشأ مشاكل أو الحاجة التوضيح، يمكن هذه العلامة تسهيل فهم من الاتصال الداخلي معه، وإذا تم المشتركة المرآة صراحة، فإنها يمكن أن نعرف الاتصال التي تسمح للناس الخارجي.

ليست هذه هي التسمية الوحيدة التي يمكن استخدامها. يمكنك أن تكون سرية، وفقا لتعريف معلومات الترخيص إلى ضرورة مرآة لتحديد مجموعة متنوعة من العلامات يمكن أيضا أن تكون علامات محددة للمساعدة في أتمتة.

بالإضافة معيل، يمكنك أيضا استخدام تسميات متعدد الخطوط:

# مجموعة واحدة أو أكثر الفرد labelsLABEL com.example.version = "0.0.1 بيتا" LABEL vendor1 = "RBTSB إنكوربوريتد" LABEL vendor2 = TIPTAPCODE \ IncorporatedLABEL com.example.release تاريخ = "202-04-02" LABEL كوم .example.version.production = "0.0.1"

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

LABEL بائع = ACME \ إنكوربوريتد \ com.example.is بيتا = \ com.example.is الإنتاج = "" \ com.example.version = "0.0.1 بيتا" \ com.example.release تاريخ = " 2015/02/12 "

ينبغي أن نضيف كما الكثير من الفوقية إلى النسخ المتطابق عامل الميناء غير قابل للتغيير لتسهيل تتبع، وتحسين الرؤية والصيانة.

الاعتماد على بيئات محددة تجنب بناء مرآة

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

لماذا استخدام وعاء غير الجذر؟

افتراضيا، تشغيل حاويات عامل الميناء كجذر. تشغيل حاويات عامل الميناء باعتباره تحكم المستخدم الجذر كاملة من النظام المضيف. ومع ذلك، لأسباب أمنية، وأنا لا أنصح هذه الممارسة. ويوصى حاويات العملية غير الجذر عامل الميناء يعكس طبقة إضافية من الحماية، في بيئة الإنتاج عموما لاستخدام وعاء غير الجذر. ومع ذلك، لأن هذه السفن التي تديرها مستخدمين غير الجذر لا يمكن أن تؤدي المهام التي تتطلب أذونات خاصة. إذا كنت بحاجة إلى استخدام الأمر USER الجذر غير محدد (كما هو موضح في المثال التالي)، فإنه يتطلب بعض التبديل السياق.

من الثعبان: 3.6 سليم من busterLABEL معيل = "تيموثي Mugayi < timothy.mugayi@gmail.com > "تحديث RUN الرابطة بين الحصول على && الرابطة بين الحصول على تثبيت -y -ما لا تثبيت-يوصي \ مجلد مشترك && جمهورية مقدونيا -rf / فار / ليب / عرضة / قوائم / * # البكم initRUN مجلد مشترك -O / البيرة / المحلية / بن / البكم -init https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64RUN شمود + س / البيرة / المحلية / بن / البكم-initRUN نقطة تثبيت --upgrade pipWORKDIR / البيرة / SRC / appCOPY requirements.txt .RUN نقطة تثبيت -r requirements.txtCOPY helloworld.py .USER 1001ENTRYPOINT

إذا كنت لا تستخدم الصورة الأساسية الناتجة عن الجذر، ولكن الحاجة للرجوع إلى الجذر، يمكنك القيام بما يلي:

 من < مساحة الاسم > / < صورة > : < tag_version > الجذر USER

لا تقم بتشغيل العديد من العمليات داخل حاوية واحدة

الحاويات ومزايا مزايا حاوية المتعلقة الأجهزة الظاهرية التي تتفاعل مع بعضها البعض من خلال عدد وافر من الحاويات لتشكيل التطبيق الكامل. نحن لسنا بحاجة لتشغيل التطبيق بالكامل في حاوية واحدة. بدلا من ذلك، ينبغي قدر الإمكان التطبيق في الخدمات متعددة، وخدمات التوزيع لعبوات متعددة لدينا. هذا يمكن أن تزيد من المرونة وزيادة الموثوقية.

لا تقم بتثبيت نظام التشغيل في وعاء

بعد فترة من عامل الميناء، أنت من المحتمل أن تواجه هذا الوضع. على الرغم من أنك يمكن تركيب وتشغيل كامل نظام التشغيل لينكس في الحاوية. ولكن يجب عليك أن تفعل هذا؟

هذا قد لا يكون فكرة جيدة. يتم إنشاء صورة عامل الميناء باستخدام مفهوم الطبقات، مما يضيف المزيد من الأشياء، وكلما كانت الصورة التوسع. مثالية لنظام تشغيل كامل ليس استخدام عامل الميناء. في الحالة المثالية، يجب أن الحاوية الداخلية الخاصة بك فقط تحميل المكونات الضرورية.

لا تقم بتشغيل الخدمات غير الضرورية داخل حاوية

من أجل الاستفادة الكاملة من الحاوية، يجب أن تبقي الحاوية تبسيط ممكن. هذا يحسن الأداء إلى أقصى حد وتقليل المخاطر الأمنية. لذلك، يرجى تجنب تشغيل ليست على الاطلاق الخدمات الضرورية. على سبيل المثال، إن لم يكن ضروريا، لا تقم بتشغيل خدمة SSH في الحاوية، يمكنك اختيار طرق أخرى (مثل عامل الميناء إكسيك) قم بتسجيل الدخول إلى الحاوية.

لا تقم بتحميل الإجراءات غير الضرورية في حاوية

يجب أن تعرف هذا نموذج مضاد. عند استخدام عامل الميناء، وكثير من الناس يميلون إلى أدوات تحميل السونار كما في مرآة، لضمان تغطية رمز وهلم جرا.

عن طريق دعم متعدد المراحل من عامل الميناء CE 17.05+ البدء في بناء (متعددة المراحل يبني) واسطة، يمكنك استخدام متعددة من مرحلة في Dockerfile في. يتم تجاهل حاوية مؤقتة مرحلة بناء، بحيث يتم تبسيط الصورة النهائية حاوية وقت التشغيل. على سبيل المثال، عندما تحتاج إلى ترجمة رقم ثنائي من الملف المصدر، ثم نسخها إلى المرآة في المرحلة النهائية في ملف ثنائي الثاني.

المزايا:

  • بناء أسرع، مرآة مبسطة تسمح أسرع الوقت الذي يقضيه عندما تنتقل عبر الشبكة يعكس أقل عملية CI / CD.
  • تتطلب كميات أقل من مساحة التخزين.
  • بدء الباردة (سحب مرآة) أسرع.
  • سطح الهجوم المحتملة أقل.

العيوب:

  • أدوات أقل في الحاوية، ولكن هذا هو ثمن قليل لضمان تبسيط الحاويات المطلوبة لأجر.

أداة إضافية للمراقبة في حاوية

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

عامل الميناء نفسه يأتي مع عدد من المؤشرات، فمن الممكن لتشغيل كشفت كل حاوية وحدة المعالجة المركزية والذاكرة وشبكة I / O الاستخدام، ونقطة النهاية قد يكون الوصول إليها عبر API بعيد عامل الميناء / الإحصائيات. ديناميات التطبيق وNewrelic هما برنامج الجاهزة التي يمكن تعبئتها مع صورة عامل الميناء، من الصحة إلى مساعدتك على فهم تطبيقات مستوى التطبيق والحاويات.

يعكس أساس الحب والكراهية

"هل تعرف الذي بنى هذا المشهد، الذي قد أضفت شيئا؟"

هنا هو ارجاعها. نضع في اعتبارنا الأمن هو الاتجاه ينبغي لجميع مطوري البرمجيات الجهود. كنت بحاجة إلى معرفة كيفية تعقب مصدر مرآة عامل الميناء ونرى ما بداخله.

تحتاج إلى أن نضع في الاعتبار النقاط التالية:

  • يعكس ما تم إنشاؤه.
  • تحقق من أن المرآة لم يتغير بعد الخلق.
  • التحقق من محتويات المرآة.
  • هل هناك ثغرة أمنية مسح المرآة.

يمكننا تنفيذ أدوات تحليل ثابتة من خلال عدد من الحاويات. وتشارك هذه الأدوات في جميع الجوانب، فمن خارج نطاق هذا المقال، ولكن أقترح عليك أن تأخذ بعض الوقت للتعلم.

كلير هو أداة مثيرة للاهتمام التي يمكن أن توفر الآلية أمن الحاويات والمسح الضوئي التعرض للتطبيقات عامل الميناء الخاص بك. الضعف العام ومشتركة تقوم بفحص قاعدة بيانات (CVE). إذا كنت تقوم بتشغيل محليا عامل الميناء، يمكنك تحميل بوستجرس، ثم قم بتوصيل كلير لبوستجرس. ما يلي هو الحد الأدنى من التكوين المطلوبة لبدء وتشغيل كلير:

$ MKDIR $ PWD / clair_config $ حليقة -L https://raw.githubusercontent.com/coreos/clair/master/config.yaml.sample -o $ PWD / clair_config / config.yaml $ عامل ميناء المدى -d -e POSTGRES_PASSWORD = "" -p 5432: 5432 بوستجرس: -d 9.6 $ عامل ميناء المدى --net = المضيف -p 6060-6061: 6060-6061 -v PWD / clair_config: / التكوين quay.io/coreos/clair:latest -config = / التكوين / config.yaml

إذا كنت ترغب في تغيير بوستجرس الميناء، وتأكد لتعديل ملف config.yaml. إذا كان النظام قد تم تشغيل بوستجرس آخر، يجب الحرص على عدم عامل ميناء تغيير المنفذ إلى منفذ آخر غير 5432.

كلير: قاعدة البيانات: # قاعدة البيانات drivertype: pgsqloptions: # كيو سلسلة اتصال # https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRINGsource: المضيف = المضيف المحلي ميناء = 5432 = المستخدم بوستجرس كلمة المرور = 123456 sslmode = تعطيل statement_timeout = 60000

بعد المرآة حتى وأداء، يمكنك تشغيل عامل الميناء ملاحظة لتأكيد السفينة وتشغيلها:

أنت لا تحتاج إلى الالتفات كلير UI ويب أو CLI. يمكنك فقط أن تستخدم من قبل طرف ثالث REST API أو الأدوات CLI.

بيان جامع هي خفيفة الوزن تطبيق تحليل ساكنة، يمكنك البدء الحاوية من مستودع مرآة لتحليل ثابت، يمكنك تشغيل أي برنامج نصي ومعلومات مفيدة اجمع (مثل حزمة البرامج المثبتة)، وإنفاذ السياسات، وكذلك يعكس المدرسة الخبرة.

عامل ميناء مقعد للعامل الميناء الأمن هو الأداة التي تم إنشاؤها من قبل فريق، فستعمل على قائمة أفضل الممارسات في مجال الأمن عامل الميناء المضيف المشاكل إن وجدت وتميز.

لا تقم بتخزين بيانات حساسة في مرآة الحاويات

تأكد من تجنب هذا الخطأ. إذا كانت صورتك تفتح للجمهور، أو سوف المطور دفعت عن غير قصد إلى الصورة العامة للعامل الميناء مستودع صورة، وسوف يؤدي إلى الكشف عن الخصوصية والمعلومات الحساسة. تذكر أبدا لاستخدام COPY أو `معلومات حساسة في Dockerfile في.

لتجنب هذا، وضع البيانات الحساسة المخزنة على نظام ملف آمن، والسماح الحاوية للاتصال. في ظل الظروف العادية، وينبغي أن يكون هذا على نظام الملفات المضيف حيث الحاوية، أو ما شابه ذلك يمكن استخدامها من قبل AWS مطاطا كتلة التخزين (EBS) أو ما شابه S3 تخزين كائن خدمة تخزين كتلة.

وبالإضافة إلى ذلك، يجب تجنب تخزين بيانات الاعتماد الأمن في صورة عامل الميناء. كما المطورين، فإننا في بعض الأحيان تبني نهج كسول، وكلمة السر الثابت تلوينها والمفتاح الخاص في التعليمات البرمجية. تحتاج إلى التعود على المعلمة -e لتحديد متغير البيئة عامل الميناء حاوية في وقت التشغيل.

يمكنك أيضا الحياة الفطرية ملف، يقرأ متغيرات البيئة من الملف. الحصول على أوراق الاعتماد التي CMD من مصادر طرف ثالث أو `البرامج النصية المخصصة يمكن أن تستخدم أيضا للحصول على أوراق اعتماد ذات الصلة المطلوبة حاويات عامل الميناء.

لا تقم بتخزين البيانات في حاوية أو سجلات

تغيير طبيعة الحاوية من السجل. الحاوية هي عابرة، والدولة غير المثالية للتطبيق. أساسا، كل البيانات المخزنة في حاوية تشغيل يجب يدم طويلا، كنت قد لاحظت أنه عندما يتم إغلاق الحاوية، سيتم فقدان البيانات. ولذلك، فإن ممارسة البيانات المخزنة خارج الحاوية عامل الميناء هو أجدر من الثناء. هناك بعض الأدوات التي يمكن أن تساعدك على استخراج عامل الميناء سجل ومكان تخزين البيانات أكثر ديمومة.

في التعامل مع السجل عامل الميناء أن نأخذ في الاعتبار ما يلي: عامل الميناء ثلاثة مستويات على الأقل من التسجيل الذي حاويات عامل الميناء، خدمة عامل الميناء ونظام التشغيل المضيف، اخترت ينبغي أن تكون طريقة تسجيل قادرة على استخراج جميع المستويات من جذوع الأشجار.

لا الكتابة إلى نظام الملفات من الحاويات

يكتب محتويات كل حاوية من نظام الملفات سيتم تنشيط "نسخ عند الكتابة" استراتيجية. فإنه يستخدم برنامج تشغيل التخزين (deviermapper، overlayfs أو محرك أقراص آخر) لإنشاء طبقة جديدة من التخزين. في الممارسة العملية، وهذا المخزن تدفع ضغوط هائلة، وخاصة في حالة استخدام Devicemapper أو BTRFS.

كتابة البيانات للتأكد من أن حجم الوعاء فقط. للشركات الصغيرة tmpfs الملفات المؤقتة يمكن كتابة، لأن ملف مؤقت موجود tmpfs فقط ذاكرة النظام أو قسم المبادلة.

لا تقم بتشغيل PID 1

كثير من الناس لا يعرفون هذه مشكلة شائعة.

عامل الميناء ليست مسؤولة عن تشغيل عملية تنظيف تهيئة عملية تابعة العملية، وبالتالي فإن الحاوية يمكن أن تحدث عملية غيبوبة، مما يؤدي إلى أخطاء غير متوقعة.

استخدام أو البكم-الحرف الأول تيني

PID 1 هو خاص جدا في يونكس، وبالتالي تجاهلها في نظام الحرف الأول، فإنه عادة ما ينتج في معالجة الإشارات وعملية خطأ. هذا يمكن أن يؤدي إلى حاوية مماثلة لا يمكن أن تتوقف بأمان، أو يجب أن تدمر السفينة ظهرت تسريبات وغيرها من المشاكل.

غيبوبة الوسائل العملية التي تم توقف العمليات، ولكن العملية لا تزال تحتل مناصب في الجدول العملية، لأن دعواتهم عملية الأصل الانتظار لم يتم استرداد استدعاء النظام. من الناحية النظرية، سيتم جدا قدم كل طرف من طرفي العملية لفترة وجيزة حالة غيبوبة، ولكن سوف تستمر بعض عمليات الدولة غيبوبة لفترة طويلة.

إذا عملية تولد عملية جديدة، ولكنها ليست جيدة لمعالجة الإشارات، إشارة لا يمكن إدراكها وإنهاء العمليات التابعة لها، يمكنك استخدام تيني أو البكم-الحرف الأول. على سبيل المثال، نص باش لا يمكن معالجة أو إشارات الإفراج بشكل صحيح.

وفيما يلي نموذج تشغيل من الحرف الأول البكم، التي يمكن أن تكون prepare.sh قيادة شيل يمكن أن تستخدم أيضا لتنفيذ التطبيق:

RUN مجلد مشترك -O / البيرة / المحلية / بن / البكم-الحرف الأول https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 RUN شمود + س / البيرة / المحلية / بن / البكم-الحرف الأول نقطة الدخول

إذا اخترت أو تيني المثالي، يمكن استخدام إشارة بيثون اناكوندا كوندا ما يلي:

RUN كوندا تثبيت --yes -c كوندا لجم تيني نقطة الدخول

وأخيرا، هناك مثال أكثر عمومية، فإنه لا تعتمد على أي لغة برمجة:

من العقدة: 13.12.0 النحافة معيل تيموثي Mugayi < timothy.mugayi@gmail.com > ENV TINI_VERSION = 'v0.13.0' # أضف الحرف الأول تيني، انظر https://github.com/krallin/tiniADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini / تيني RUN شمود + س / تيني # مجموعة تيني كما entrypointENTRYPOINT

استخدام Dockerfile شكل التدقيق في CI / CD في

مع لغات البرمجة، عامل الميناء أيضا تنسيق أداة الاختيار.

الأداة شكل فحص العديد من المزايا، لأنه يجبرك على استخدام أفضل الممارسات. مضيفا شكل CI / CD أثناء عملية التفتيش، ويمكن للفريق أن تساعد الأخطاء تجنب المشتركة، وإقامة أفضل الممارسات عند بناء منتجات عامل الميناء الصورة. يمكن أن تبدأ hadolint، وهذا هو عمل مكتوب هاسكل Dockerfile أداة الاختيار شكل في، وقادرة على حل Dockerfile إلى AST، وإجراء الفحص الدوري على AST.

دعونا تشغيل عينة. إلى الاختيار شكل عامل الميناء، يمكنك تنفيذ الأمر التالي:

$ عامل الميناء تشغيل --rm -i hadolint / hadolint <  Dockerfile

يتم عرض النتائج التالية بعد الانتهاء من الأشكال الاختيار:

الشكل أعلاه رمز الخطأ DL3008 "دبوس" رمز خطأ الوصف hadolint من الدولة. النسخة الثابتة يمكن أن يضطر لبناء حزمة تثبيت نسخة محددة من الوقت، لا يهم ما نعم ذاكرة التخزين المؤقت. هذه التقنية يمكن أن تقلل من الاعتماد الناجمة عن التغيرات غير المتوقعة في الأخطاء حزمة البناء.

الأفكار القليلة الماضية

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

هناك العديد من الأساليب التي يمكن أن تجعل عامل الميناء صورة أفضل وأكثر أمانا. وآمل هذه المادة يمكن ان اعطيكم بعض إلهام لمساعدتك على فهم ما يجب القيام به، ما لا تفعل، وتقديم بعض الحلول في حين بناء المتطابق حاويات عامل الميناء الداخلية أو الخارجية التي يمكن تطبيقها على لك.

الرابط الأصلي:

https://medium.com/better-programming/docker-best-practices-and-anti-patterns-e7cbccba4f19

هذا المقال هو ترجمة لمقالة CSDN، يرجى الإشارة إلى المصدر.

فوائد اليوم

التقى لو تشى

أيضا جزءا هاما من "مليون يتعلم الناس AI" هو 2020 مؤتمر مطوري AIProCon سوف يعيش الناس من خلال النماذج الموجودة على الإنترنت، مما يسمح للمطورين 3 يوليو إلى 4 وقفة للتعرف على AI الحالي للتكنولوجيا المتطورة البحوث والتكنولوجيا الأساسية والتطبيقات، فضلا عن الخبرة العملية في حالة الأعمال التجارية، ولكن يمكن أيضا أن تشارك في مجموعة متنوعة من المثير المطور على الانترنت شارون ومشاريع البرمجة. المحتملين سلسلة من المعنيين من الأنشطة، ويعيش التفاعل عبر الإنترنت، وليس فقط يمكن الاتصال مع عشرات الآلاف من المطورين، وكذلك فرصة للفوز الهدايا الحية الحصرية والقهوة والقمح التكنولوجيا حتى كبير.

برمجة الناقل المهنية 21، الذي داس على بلدي حفرة

مبرمج البالغ من العمر 37 عاما أن تقطع! 120 يوم للعثور على عمل؟ لا أريد أن يكون القضاء عليها، وهذا يمكن أن تكون فرصتك الأخيرة

أي وعاء ساخن من Chongqing قوي ، يساعدك Python على استكشاف المتجر

واحد من 35 شخصا تقل أعمارهم عن 35 الابتكار العلمي والتكنولوجي، ومهمة الولايات المتحدة لفتح الدكتور AI غيض من فيض

تجنيد الناس! الخلية مقابلة المعرفة يجب السيطرة على ثماني نقاط

في تلك السنوات ، صعدنا حفرة جافا

المصدر المفتوح يمكن فقط تكوين صداقات؟

Serverless ارتفاع، لماذا علي، ومايكروسوفت، قد تبنت AWS مفتوحة OAM المصدر؟

جوجل أيضا "ربط الأحزمة على البطون" ليعيش

البنية التحتية 5G: كيفية جعل مئات الملايين من المستخدمين لبسلاسة دعم IPv6؟

حقا التحدث | "ترابي CP" وهو أقوى؟ تجدون يوم واحد هو جين تاو وتشانغ يون لونغ

زراعة العشب جي | مكياج غني بالشفاه ، يرجى أيضًا كيندال و هيون يا إنوسنت