باستخدام إيبتبلس ميناء إعادة توجيه مع عامل الميناء

لدي خادم لينكس تشغيل جنكينز (هتب على المنفذ 8080) ونفس الخادم يعمل أيضا عامل الميناء 1.12.1. لقد استخدمت بعض قواعد إيبتبلس (وفقا لمستندات تثبيت جينكينز الرسمية) لإعادة توجيه المنفذ 8080 إلى منفذ المضيف 80 ، بحيث يعمل هتب الافتراضي مع جينكينز (أي. http://myserver بدلا من http://myserver:8080):

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080

ومع ذلك هذه القواعد كسر قدرة عامل الميناء لتحميل الموارد الصحيحة عبر هتب خلال docker build الأمر. على سبيل المثال, RUN apt-get update فشل مع أخطاء متعددة "فشل التنزيل". القيام wget http://www.google.com داخل الحاوية بإرجاع هتمل للصفحة الرئيسية جنكينز. هتب يحصل من المضيف العمل بشكل جيد. إزالة قواعد إيبتبلس النتائج في RUN apt-get update العمل مرة أخرى. لذلك أعتقد أن تلك القواعد إيبتبلس تتداخل مع آلية شبكة عامل الميناء.

يمكن لمثل هذا ميناء إعادة توجيه تتعايش مع عامل الميناء? لو ذلك, كيف يمكن للمرء أن يذهب حول كتابة قواعد إيبتبلس لحل هذه المشكلة?

تعديل محتمل لقواعد إيبتبلس هو إزالة كل من واستبدال مع:

iptables -t nat -A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 8080

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

حل آخر هو استخدام وكيل عكسي لإعادة توجيه طلبات هتب الواردة على منفذ تكب 80 إلى منفذ المضيف 8080. اعتدت العلبة مع كاديفيل بسيطة التالية:

localhost:80proxy / localhost:8080

مع هذا في مكان ، يمكنني إزالة قواعد إيبتبلس تماما.

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