لدي فس الغرض العام ، وأنا دوكيريسينغ التطبيقات على ذلك. سيكون هناك حوالي 5-6 حاويات عليه ، وقليل جدا آخر ، لذلك يمكن إعادة بناء الصندوق بشكل تافه كما هو مطلوب.
لكل التطبيق لدي النصي البداية. حاوية وورد يشبه هذا:
#!/bin/bash# Get the host IP addressexport DOCKER_HOSTIP=`ifconfig docker0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1`echo "Connecting to database on Docker host ${DOCKER_HOSTIP}"docker run \ --add-host=docker:${DOCKER_HOSTIP} \ --network dockernet \ --network-alias jonblog \ --detach \ --restart always \ --rm \ jonblog
ومع ذلك ، يقوم بإرجاع خطأ:
خيارات متضاربة :restart إعادة التشغيل و r جمهورية مقدونيا
هناك العديد من تذاكر عامل الميناء التي تقول إن هذا معقول ، لكنني لا أفهمه. أعتقد أن المعنى واضح: إذا كانت الحاوية لا تعمل (على سبيل المثال عند بدء التشغيل) ، فأنا أريد أن أبدأ تشغيلها. إذا مات ثم أتوقع إزالة الحاوية ، واحدة جديدة جديدة تم إنشاؤها من الصورة الأساسية. يجب أن تكون الحاويات غير قابلة للتغيير على أي حال - أي حالة أرغب في الحفاظ عليها ، مثل ملفات الوسائط والسجلات ، ستتم كتابتها إلى مجلدات.
وبالتالي, اعتقدت أنني يجب أن أسقط --restart
ضع علامة ، ثم استخدم مدير العمليات لإيقاف حاويات عامل الإرساء وبدء تشغيلها. هل يمكنني استخدام مونيت هنا? كنت آمل أن أكون قادرا على فعل شيء مثل:
CHECK PROCESS jonblog MATCHING jonblog START PROGRAM = "/root/docker/jonblog/host-start.sh" STOP PROGRAM = "docker stop jon-blog"
ومع ذلك ، هذا يتحقق من جدول عملية النظام ، وليس docker ps
، وبالتالي لن تجد شيئا يطابق السلسلة المحددة. هل يمكنني الحصول عليه إلى إكسيك docker ps
دوري, وخطوط المباراة في الإخراج?
سأكون سعيدا لاستخدام أداة أخرى إذا ثبت قوية. على سبيل المثال ، أجد المشرف الوزن الثقيل قليلا ، ولكن إذا كان هذا هو أكثر قدرة على العمل مع عامل الميناء ، وأنا على استعداد لاستخدامه.
توضيح بشأن-جمهورية مقدونيا
السبب لماذا أريد --rm
هل هذا أثناء عملية الإرساء ، أوقف الحاوية قيد التشغيل حاليا, load
نسخة جديدة من الصورة ، وإعادة تشغيل البرنامج النصي أعلاه. وهذا يعني أنه يتم إخطار عامل الميناء من restart
سياسة لكل حاوية. لقد وجدت أنه بعد إعادة تشغيل المربع ، سيكون لدي 15 إصدارا مختلفا قليلا من التطبيق يعمل في وقت واحد ، وهذا ليس القصد.
أفترض أنني يمكن استخدام docker update --restart never
على الحاويات القديمة لمنع حدوث ذلك ، ولكن بعد ذلك عندما يتوقف حاوية بلدي ، وأنا تركت معها الكذب حولها ، وكنت فقط في أقرب وقت يكون ذلك لصناعة السيارات في حذف. يمكنني تنظيف القديمة بشكل دوري باستخدام نوع من وظيفة كرون ، ولكن هذا يشعر قليلا هاكي بالنظر إلى أن عامل الميناء يمكن أن تفعل ذلك بالنسبة لي.
البحث عن مجموعة من الإجابات
وقد اقترح تعليق مفيد جدا وأود أن ننظر في مينيكوب ، الذي يبسط على ما يبدو الإعداد من كوبرنيتس ، حتى لدرجة الفرد المهرة بشكل مناسب يمكن أن تكون قائمة وعاملة في خمس دقائق.
ما زلت أرغب في رؤية المزيد من الحلول الخفيفة المقترحة ، لذلك لدي مجموعة من الإجابات للاختيار من بينها. كما هو مبين ، أود أن أعرف الإجابة على ما إذا كان مشرف عملية مثل مونيت ستعمل.
من أعلى قبالة رأسي ، ويمكنني أن أكتب حلقة قذيفة لكتابة docker ps
إلى ملف كل خمس ثوان لمدة دقيقة ، ثم قم بتشغيل ذلك على كرون كل دقيقة. يمكنني بعد ذلك مسح هذا الملف باستخدام grep
و مونيت CHECK PROGRAM
فحص النظام. هذا هو هاكي قليلا ، ولكن هو شيء أستطيع أن أفهم بسهولة إذا كان هناك مشكلة معها. أي تقدم على هذا الاقتراح?