আমি ম্যাকের জন্য ডকার ব্যবহার করছি। আমি একটি ডকার পাত্রে একটি নোডেজ ভিত্তিক মাইক্রোসার্চিস চালাচ্ছি। আমি ব্রাউজারের মাধ্যমে নোড মাইক্রোসার্ভেস পরীক্ষা করতে চাই। কীভাবে চলমান ডকারের ধারক আইপি ঠিকানা পাবেন?
আমি ম্যাকের জন্য ডকার ব্যবহার করছি। আমি একটি ডকার পাত্রে একটি নোডেজ ভিত্তিক মাইক্রোসার্চিস চালাচ্ছি। আমি ব্রাউজারের মাধ্যমে নোড মাইক্রোসার্ভেস পরীক্ষা করতে চাই। কীভাবে চলমান ডকারের ধারক আইপি ঠিকানা পাবেন?
উত্তর:
আপনি যদি আপনার হোস্ট থেকে পাত্রে পোর্ট মানচিত্র করতে না চান তবে আপনি ধারকটির জন্য সরাসরি ডকার রেঞ্জ আইপে অ্যাক্সেস করতে পারেন। এই সীমাটি ডিফল্টরূপে কেবলমাত্র আপনার হোস্ট থেকে অ্যাক্সেস করা হয়। আপনি আপনার ধারক নেটওয়ার্কের ডেটা যাচাই করতে পারেন:
docker inspect <containerNameOrId>
সম্ভবত ফিল্টার করা ভাল:
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
সাধারণত, ডিফল্ট ডকার আইপি পরিসীমা হয় 172.17.0.0/16। আপনার হোস্ট হওয়া উচিত172.17.0.1 এবং 172.17.0.2যদি সবকিছু স্বাভাবিক থাকে এবং আপনি কোনও বিশেষ নেটওয়ার্ক বিকল্প নির্দিষ্ট না করেন তবে আপনার প্রথম ধারকটি হওয়া উচিত ।
"বাশ ট্রিকিং" এর পরিবর্তে ডকার বৈশিষ্ট্যগুলি ব্যবহার করে আরও একটি মার্জিত উপায় সম্পাদনা করুন :
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost:)
http://172.17.0.2:anyPortএটি হোস্টের কাছ থেকে আমার প্রস্তাবিত পদ্ধতিতে করা যেতে পারে । অবশ্যই যদি আপনি হোস্টে লোকালহোস্ট ব্যবহার করে এটি অ্যাক্সেস করতে চান তবে আপনাকে অবশ্যই পোর্টগুলি মানচিত্র করতে হবে। ওপি কী চায় তা দেখবে।
docker run --name struts --rm -i tomcatকরুন : 2. আপনার ধারক আইপি পান (যদি আপনার কেবল একটি থাকে): docker inspect struts | grep '"IPAddress"' | head -n 13. এটি হোস্টের ব্রাউজারে খুলুন http://x.x.x.x:8080। আপনি অ্যাপাচি টমক্যাট ডিফল্ট পৃষ্ঠাটি দেখতে পারেন।
--formatপরিবর্তে পুরো ধারক তথ্য কেবল আইপি ঠিকানা পেতে বিকল্প ব্যবহার করুন :
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
আধুনিক ডকার ইঞ্জিনগুলির জন্য এই আদেশটি ব্যবহার করুন:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
এবং পুরানো ইঞ্জিনগুলির জন্য ব্যবহার করুন:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
আপনি যদি ঠিক ধারকটির মধ্যে এটি পেতে চান তবে আপনি চেষ্টা করতে পারেন
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
আমার ক্ষেত্রে, নীচে ম্যাক উপর কাজ করেছে :
আমি সরাসরি ম্যাকের ধারক আইপিগুলিতে অ্যাক্সেস করতে পারি না। আমাকে localhostপোর্ট ফরওয়ার্ডিং সহ ব্যবহার করতে হবে , উদাহরণস্বরূপ যদি পোর্টটি 8000 হয় তবেhttp://localhost:8000
Https://docs.docker.com/docker- for- mac/ networking/ ##-limitations- use- cases- and- workarounds দেখুন
আসল উত্তরটি ছিল: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
আপনি সেই হোস্ট মেশিনের বাইরে থেকে ডকারের আইপি অ্যাক্সেস করতে পারবেন না। আপনার ব্রাউজারটি যদি অন্য কোনও মেশিনে থাকে তবে -p 8080:8080কমান্ড চালানোর জন্য হোস্ট পোর্টটিকে ধারক পোর্টে মানচিত্র করা আরও ভাল ।
পাসিং -pআপনি ধারক পোর্ট হোস্ট বন্দর ম্যাপ করতে পারেন এবং একটি প্রক্সি মনোনীত ধারক পোর্ট বললেন হোস্ট পোর্টের জন্য সব traffix ফরোয়ার্ড করতে সেট করা হয়।