मैं डॉकर के साथ 1 से अधिक पोर्ट कैसे उजागर कर सकता हूं?


459

इसलिए मेरे पास 3 पोर्ट हैं जो मशीन के इंटरफेस के संपर्क में आने चाहिए। क्या डॉकटर कंटेनर के साथ ऐसा करना संभव है?


1
कई बंदरगाहों को पुनर्निर्देशित करना संभव है। डोको
Mark O'Connor

जवाबों:


717

केवल एक पोर्ट को बेनकाब करने के लिए, आपको यही करना है:

docker run -p <host_port>:<container_port>

कई बंदरगाहों को उजागर करने के लिए, बस कई -pतर्क दें:

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

4
धन्यवाद! डॉक्स में यहां पाया गया: docs.docker.com/userguide/dockerlinks/… जहां यह कहता हैNote: The -p flag can be used multiple times to configure multiple ports.
टेड एम। यंग

क्या किसी फ़ाइल में पोर्ट निर्दिष्ट करने का कोई तरीका है? उदाहरण के लिए विकल्प का उपयोग कर --env-file?
गियोवन्नी बिटलाइनर

8
@GiovanniBitliner मैं अभी भी बहुत इस के लिए नया हूँ, लेकिन मैं यकीन है कि आप के साथ एक Dockerfile में बंदरगाहों को परिभाषित करेगा हूँ बेनकाब , तो प्रदर्शन docker run -P(अपरकेस ध्यान दें) जो स्वचालित रूप से सभी बंदरगाहों Dockerfile में बेनकाब के साथ परिभाषित को उजागर करता है
टेड एवरी

कई पोर्ट एक सिस्टमड सर्विस फ़ाइल के तहत init प्रक्रिया को रोक सकते हैं?
लांती

1
मुझे लगता है कि यहां सही शब्द publishनहीं है expose
tgogos

291

चरण 1

अपने में Dockerfile, आप EXPOSEकई बंदरगाहों को उजागर करने के लिए क्रिया का उपयोग कर सकते हैं ।
जैसे

EXPOSE 3000 80 443 22

चरण 2

फिर आप ऊपर आधारित एक नई छवि बनाना चाहेंगे Dockerfile
जैसे

docker build -t foo:tag .

चरण 3

फिर आप -pकंटेनर पोर्ट के साथ होस्ट पोर्ट को मैप करने के लिए उपयोग कर सकते हैं , जैसा कि ऊपर में परिभाषित किया गया EXPOSEहै Dockerfile
जैसे

docker run -p 3001:3000 -p 23:22

यदि आप निरंतर बंदरगाहों की एक सीमा को उजागर करना चाहते हैं, तो आप इस तरह से डॉक चला सकते हैं:

docker run -it -p 7100-7120:7100-7120/tcp 

18
EXPOSE केवल उन बंदरगाहों के लिए प्रलेखन है जो केवल लिंक करने के लिए प्रकाशित और उपयोगी हैं। बंदरगाहों की पूरी सूची का उपयोग करके पाया जा सकता है- और वे स्वचालित रूप से होस्ट पर उपलब्ध पोर्ट पर मैप किए जाएंगे।
अरुण गुप्ता

4
एक्सपोज की जरूरत नहीं है। पहला चरण निकालें या इसे वैकल्पिक बनाएं।
अमीरहोसिन

27

यदि आप docker-compose.ymlफ़ाइल का उपयोग करते हैं:

services:
    varnish:
        ports:
            - 80
            - 6081

आप होस्ट / नेटवर्क पोर्ट भी निर्दिष्ट कर सकते हैं

varnish:
    ports:
        - 80:80
        - 6081:6081

0

यदि आप एक छवि से एक कंटेनर बना रहे हैं और कई बंदरगाहों को उजागर करना चाहते हैं (प्रकाशित नहीं) तो आप निम्न कमांड का उपयोग कर सकते हैं:

container namedocker create --name --expose 7000 --expose 7001image name

अब, जब आप docker startकमांड का उपयोग करके इस कंटेनर को शुरू करते हैं, तो ऊपर दिए गए कॉन्फ़िगर किए गए पोर्ट उजागर हो जाएंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.