কেন ডকফাইলে এক্সপোজ ব্যবহার করবেন - যেহেতু আপনি যাইহোক সমস্ত পোর্টে বাইন্ড করতে পারেন


23

আমি পোর্টটিতে পোর্টটি না docker run -p 3000:3000 image করেই পারি EXPOSE(নীচে দেখুন)। যদি এটি সত্য হয়, তবে কেন ডকফাইলে এক্সপোজ লাগিয়ে বিরক্ত করবেন? এটি কি কেবল চিত্র ব্যবহারকারীদের সাথে যোগাযোগের জন্য? কারণ আমি বন্দরগুলি বর্ধিত করার কোনও কার্যকরী কারণ জানি না যদি সেগুলি যাইহোক বাইন্ডেবল হয়।


এটি কোনও এক্সপোজড না হওয়া সত্ত্বেও পাত্রে কোনও পোর্টে আমাকে বাধ্যতামূলক দেখানো পদক্ষেপগুলি এখানে রয়েছে

$ cat Dockerfile
FROM alpine
RUN apk add nodejs npm vim
COPY webserver /webserver
CMD [ "node", "/webserver/index.js" ]


$ docker build .
Sending build context to Docker daemon  1.931MB
Step 1/4 : FROM alpine
 ---> 11cd0b38bc3c
Step 2/4 : RUN apk add nodejs npm vim
 ---> Using cache
 ---> 4270f8bdb201
Step 3/4 : COPY webserver /webserver
 ---> Using cache
 ---> 67f4cda61ff0
Step 4/4 : CMD [ "node", "/webserver/index.js" ]
 ---> Using cache
 ---> 1df8f9024b85
Successfully built 1df8f9024b85


$ curl localhost:4400
curl: (7) Failed to connect to localhost port 4400: Connection refused


$ docker run -d -p 4400:3000 1df8f9024b85
7d0e6c56f8ad8827fe72830a30c1aac96821104b8ea111291ca39e6536aad8fd


$ curl localhost:4400
Hello World!


$

উত্তর:


29

ডকারের এক্সপোজ ডকুমেন্টেশন এই নির্দিষ্ট পয়েন্টটিকে সম্বোধন করে:

EXPOSEনির্দেশ আসলে বন্দর প্রকাশ করে না। চিত্রটি তৈরি করা ব্যক্তি এবং ধারকটি চালিতকারী ব্যক্তির মধ্যে, কোন বন্দরগুলি প্রকাশ করার উদ্দেশ্যে রয়েছে তার মধ্যে এটি একধরণের ডকুমেন্টেশন হিসাবে কাজ করে। কনটেইনারটি চলাকালীন প্রকৃতপক্ষে বন্দরটি প্রকাশ করতে, এক বা একাধিক বন্দর প্রকাশ ও মানচিত্র করতে -pপতাকাটি ব্যবহার করুন docker run, বা -Pসমস্ত উন্মুক্ত বন্দর প্রকাশ করতে পতাকাটি উচ্চ অর্ডার বন্দরগুলিতে ম্যাপ করুন।

সর্বশেষ বাক্যটির দিকে মনোযোগ দিন, আপনি যদি একাধিক পোর্ট প্রকাশ করেন তবে কমান্ড লাইনে -Pএকাধিক সেট এড়ানোর জন্য দরকারী হয়ে ওঠে -p


"ডকুমেন্টেশন" চিত্র মেটাটাটা আকারে। -Pপতাকাটিতে দরকারী হওয়ার সাথে সাথে , অন্যান্য ইউটিলিটিগুলি এই মেটাডেটার জন্য চলমান ধারকগুলির জিজ্ঞাসা করতে পারে, যা প্রক্সিগুলিতে কার্যকর যা এই বহিষ্কার করা বন্দরগুলি তাদের পূর্বনির্ধারিত হিসাবে গতিশীলভাবে তাদের ফরোয়ার্ডিং বিধিগুলি আপডেট করে।
বিএমইচ

@ বিচ একেবারে, আমি অনুভব করেছি যে এটি একটি বাহ্যিক তথ্য যা এখনও ওপি-র জন্য কার্যকর নয় তবে এটিকে সম্পাদনা করতে নির্দ্বিধায় বলে মনে হয়
টেনসিবাই

এক্সপোজ হ'ল ডকুমেন্টেশন
智 文

4

এটি অটোমেশনের জন্য করা হয়। আপনার কাছে একটি সর্বজনীন কমান্ড থাকতে পারে যা docker run -Pকোনও ধারক শুরু করতে চালিত হয় এবং কোন পাত্রে কোন পোর্টটি প্রকাশ করে তা নির্দিষ্ট করতে ডকফেরফিল নিজেই ব্যবহৃত হয়। যদি আপনি পাইপলাইনের মাধ্যমে কয়েক ডজন বা শত শত পাত্রে নির্মিত হচ্ছে, তবে এটি বেশ কার্যকর। মঞ্চ থেকে পর্যায় পর্যন্ত পাইপলাইনের মাধ্যমে ধারকটির সাথে ডকফায়লে অন্তর্ভুক্ত নেই বাহ্যিক বিশদটি সরবরাহ করা স্কেল পর্যায়ে বেশ কঠিন।

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