কার্ল (56) পুনরুদ্ধার ব্যর্থতা: পিয়ার দ্বারা সংযোগ পুনরায় সেট করুন - ডকার পাত্রে আঘাত করার সময় [বন্ধ]


10

একটি এডাব্লুএস ইক 2 উদাহরণ থেকে (যা চলমান docker), আমি curlআমার ডকারের ধারক-হোস্ট করা ওয়েব পরিষেবাদির চেষ্টা করছি ।

প্রদত্ত:

[ec2-user]$ docker ps
CONTAINER ID        IMAGE                                                                COMMAND                  CREATED             STATUS              PORTS                                        NAMES
b56fa0d76d5c        $REGISTRY/$WORK/metrics:v0.1.0   "/bin/sh -c 'sh /root"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp   insane_leakey

আমি ধারকটির মধ্যে থেকে ওয়েব পরিষেবাটিতে আঘাত করতে পারি:

[ec2-user]$ docker exec -it b56fa0d76d5c bash
root@b56fa0d76d5c:/# curl 'http://localhost/health'
Request is missing required query parameter 'apiName' 

তবে, আমি হোস্টের কাছ থেকে এটি আঘাত করতে পারি না:

[ec2-user]$ curl 'http://localhost/health'
curl: (56) Recv failure: Connection reset by peer

আমি এই ত্রুটির উপর এই বিশদটির উত্তরটিcurl দেখেছি, তবে কীভাবে এই সমস্যাটি ডিবাগ করা যায় তা আমি নিশ্চিত নই।

উত্তর:


9

কোনও ডকারের ধারকটিতে সংযোগ পুনরায় সেট করা সাধারণত ইঙ্গিত দেয় যে আপনি ধারকটির জন্য কোনও পোর্ট ম্যাপিং সংজ্ঞায়িত করেছেন যা কোনও অ্যাপ্লিকেশনকে নির্দেশ করে না।

সুতরাং, যদি আপনি 80:80 এর ম্যাপিং সংজ্ঞায়িত করেন তবে ডকারের উদাহরণের মধ্যে আপনার প্রক্রিয়াটি আসলে পোর্ট 80 (নেটস্ট্যাট-ল্যান্স | গ্রেপ লিস্টেন) চলমান আছে কিনা তা পরীক্ষা করুন।

ডকার 'প্রক্সি' সংযোগটি গ্রহণ করার পরে, ধারকটির অভ্যন্তরে প্রক্রিয়াটির সাথে সংযোগ স্থাপনের চেষ্টা করে, ব্যর্থ হয়, তাই সংযোগটি পুনরায় সেট করার সাথে সাথে আপনি একটি রিসেট পান।


ধারকটিতে নেই netstat, তবে আমি দৌড়েছি: ss -a | grep -i LISTআউটপুট দিতে tcp LISTEN 0 100 ::ffff:127.0.0.1:http :::*। আমি যদি সেই আউটপুটটি সঠিকভাবে পড়ে থাকি তবে তা শুনা যাচ্ছে localhost:80?
কেভিন মেরেডিথ

7
আসলে, স্ট্যাকওভারফ্লো.com / a / 26553296 / 409976 আমার সমস্যাটি স্থির করেছে, মানে "0.0.0.0"ইন্টারফেস হিসাবে ব্যবহার করছে, তা নয় "localhost"
কেভিন মেরেডিথ

5
ধন্যবাদ জেসন আপনার সমাধানটি আমার পক্ষে সত্যিকারের সমাধান ছিল না, তবে এটি আমাকে সমস্যার দিকে নিয়ে যায়। আমার সাথে এটি ঘটেছিল কারণ পরিষেবাটি 127.0.0.1:9200 এ শুরু হয়েছিল (অভ্যন্তরের অভ্যন্তরে) এবং আইপিটির কারণে এটি "প্রকাশিত" হয়নি। সুতরাং আমি এটিকে 0.0.0.0:9200 এ পরিবর্তন করেছি এবং তারপরে এটি পাত্রে বাইরে থেকে কাজ শুরু করে। আপনার 9200 পোর্ট উন্মুক্ত করা দরকার, তবে আমি নিশ্চিত যে আপনি এটি ইতিমধ্যে জানেন।
টমো তিবেনস্কে

@ কেভিনমারেদিথ: এর জন্য ধন্যবাদ .. গত ৪ ঘন্টা কোজ থেকে লড়াই করে যাচ্ছি !!!
aman_novice

হোস্টে পরিবর্তনের পরে কেভিন ম্যারেডেথ এখনও আমি এটি কাজ করতে পারি না 0.0.0.0
এলোমেলো ইলি

1

আপনি ধারকটিতে tshark ইনস্টল করে এটি তদন্ত করতে পারেন এবং তারপরে tshark -i any:

তারপরে আপনি যদি বাহ্যিকভাবে কোনও অনুরোধ করেন তবে নীচের মতো কিছু দেখতে হবে:

root@618910b515f0:/code# tshark -i any
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
tshark: cap_set_proc() fail return: Operation not permitted

tshark: cap_set_proc() fail return: Operation not permitted

    1 0.000000000   172.18.0.1 → 172.18.0.3   TCP 76 45844 → 8001 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=820044004 TSecr=0 WS=128
    2 0.000019457   172.18.0.3 → 172.18.0.1   TCP 56 8001 → 45844 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

নেটওয়ার্ক প্যাকেটটি এসেছিল তবে এটি একটির সাথে প্রতিক্রিয়া জানায় RSTযার অর্থ এটি বাতিল করা হয়েছিল।


সমস্ত আইপি - এর 127.0.0.1চেয়ে সম্ভবত আপনি শুনছেন 0.0.0.0

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.