সংক্ষিপ্ত উত্তর:
EXPOSEডকুমেন্টিংয়ের একটি উপায়
--publish(অথবা -p) একটি উপায় ম্যাপিং একটি হোস্ট বন্দর একটি চলমান থেকে ধারক পোর্ট
নীচে বিজ্ঞপ্তি:
EXPOSEসম্পর্কিত Dockerfiles( ডকুমেন্টিং ) সম্পর্কিত ) সম্পর্কিত
--publishসম্পর্কিত docker run ...( সম্পাদন / রান-সময় ) সম্পর্কিত
বন্দরগুলি প্রকাশ ও প্রকাশ করা হচ্ছে
ডকার নেটওয়ার্কিংয়ে, দুটি পৃথক প্রক্রিয়া রয়েছে যা সরাসরি সরাসরি বন্দরগুলিতে জড়িত থাকে: এক্সপোর্ট করা এবং বন্দর প্রকাশ করা। এটি ডিফল্ট ব্রিজ নেটওয়ার্ক এবং ব্যবহারকারী-সংজ্ঞায়িত সেতু নেটওয়ার্কগুলিতে প্রযোজ্য।
আপনি EXPOSEডকফায়লে কীওয়ার্ড বা --exposeডকার চালানোর জন্য পতাকা ব্যবহার করে পোর্টগুলি উন্মোচন করুন । বন্দর এক্সপোজ করার একটি উপায় ডকুমেন্টিংয়ের যা কোন বন্দর ব্যবহৃত হয় তবে বাস্তবে কোনও মানচিত্র বা কোনও বন্দর খোলা হয় না । পোর্টগুলি এক্সপোজ করা alচ্ছিক।
আপনি --publishবা ব্যবহার করে --publish-allপতাকা ব্যবহার করে বন্দরগুলি প্রকাশ করুন docker run। এটি ডকারকে জানিয়েছে যে ধারকটির নেটওয়ার্ক ইন্টারফেসে কোন বন্দরগুলি খুলতে হবে। যখন কোনও বন্দর প্রকাশিত হয়, এটি একটি উপলব্ধ উচ্চ-অর্ডার পোর্টে ম্যাপ করা হয় (এর চেয়েও বেশি)30000 হোস্ট মেশিনে ) , যদি না আপনি রানটাইমটিতে হোস্ট মেশিনে মানচিত্রের জন্য পোর্টটি নির্দিষ্ট করেন। আপনি ইমেজটি তৈরি করার সময় হোস্ট মেশিনে মানচিত্রের জন্য বন্দরটি নির্দিষ্ট করতে পারবেন না (ডকফাইফিলের মধ্যে), কারণ যেখানে ইমেজটি চালাবেন সেখানে হোস্ট মেশিনে পোর্টটি উপলব্ধ থাকবে তার গ্যারান্টি দেওয়ার কোনও উপায় নেই ।
থেকে: ডকার কনটেইনার নেটওয়ার্কিং
অক্টোবর 2019 আপডেট করুন : উপরের পাঠ্যের টুকরোটি আর ডক্সে নেই তবে একটি সংরক্ষণাগারযুক্ত সংস্করণটি এখানে রয়েছে: ডকস.ডোকার.com / v17.09 / engine / userguide / networking / #exposing- এবং- প্রকাশনা- বিমানবন্দরসমূহ
সম্ভবত বর্তমান ডকুমেন্টেশন নীচে:
প্রকাশিত বন্দর
ডিফল্টরূপে, আপনি যখন একটি ধারক তৈরি করেন, এটি এর কোনও বন্দর বাইরের বিশ্বে প্রকাশ করে না। ডকারের বাইরের পরিষেবাগুলিতে বা কন্টেইনারের নেটওয়ার্কের সাথে সংযুক্ত নয় এমন ডকার পাত্রে পোর্ট উপলব্ধ করার জন্য, পতাকা --publishবা -pপতাকা ব্যবহার করুন । এটি ফায়ারওয়াল নিয়ম তৈরি করে যা ডকার হোস্টের কোনও পোর্টে একটি ধারক পোর্টকে মানচিত্র করে।
এবং এখানে পাওয়া যাবে: docs.docker.com/config/containers/container-networking/# প্রকাশিত বিমানবন্দর
এছাড়াও,
প্রকাশ করা
... EXPOSEনির্দেশনা আসলে বন্দরটি প্রকাশ করে না । এটি একধরণের ডকুমেন্টেশন হিসাবে কাজ করেচিত্রটি তৈরি করা ব্যক্তি এবং ধারকটি চালিতকারী ব্যক্তির মধ্যে, কোন বন্দরগুলি প্রকাশ করার উদ্দেশ্যে রয়েছে সেগুলির মধ্যে এটি একধরণের ।
থেকে: ডকফরফাইল রেফারেন্স
পরিষেবা অ্যাক্সেস যখন EXPOSE/ --publishসংজ্ঞায়িত না হয়:
এ @Golo Roden এর উত্তর যে বলা ::
"আপনি যদি এগুলির মধ্যে কোনওটি নির্দিষ্ট না করেন তবে ধারকটির ভিতরে থাকা পরিষেবা ব্যতীত অন্য কোনও স্থান থেকে পরিষেবাটি অ্যাক্সেসযোগ্য হবে না।"
হয়তো সময় উত্তর লেখা হচ্ছে এ ক্ষেত্রে ছিল যে, কিন্তু এখন মনে হচ্ছে যে এমনকি যদি আপনি ব্যবহার করবেন না EXPOSEবা --publish, hostঅন্যান্য এবংcontainers একই নেটওয়ার্কের কোনও পরিষেবা আপনি সেই ধারকটির ভিতরে শুরু করতে পারেন এমন কোনও পরিষেবা অ্যাক্সেস করতে সক্ষম হবেন।
এটি কীভাবে পরীক্ষা করবেন:
আমি নিম্নলিখিত ব্যবহার করেছি Dockerfile। মূলত, আমি উবুন্টু দিয়ে শুরু করি এবং একটি ক্ষুদ্র ওয়েব-সার্ভার ইনস্টল করি:
FROM ubuntu
RUN apt-get update && apt-get install -y mini-httpd
আমি build"টেস্টপোজ" হিসাবে চিত্রটি এবং runএকটি নতুন ধারক সহ:
docker run --rm -it testexpose bash
ধারকটির ভিতরে, আমি কয়েকটি উদাহরণ চালু করি mini-httpd:
root@fb8f7dd1322d:/# mini_httpd -p 80
root@fb8f7dd1322d:/# mini_httpd -p 8080
root@fb8f7dd1322d:/# mini_httpd -p 8090
আমি তার পরে curlহোম পেজ আনতে হোস্ট বা অন্যান্য পাত্রে ব্যবহার করতে সক্ষম হয়েছি mini-httpd।