Dockerfiles से पोर्ट एक्सपोज़ करना

इंटरमीडिएट Docker

Mike Metzger

Data Engineer

सेवाओं को एक्सपोज़ करना

  • EXPOSE कमांड
  • रनटाइम पर कंटेनर कौन-से पोर्ट इस्तेमाल करेगा, यह तय करता है
  • <number>, <number>/tcp, या <number>/udp के रूप में दे सकते हैं
    • जैसे EXPOSE 80 या EXPOSE 80/tcp
  • एक से अधिक एंट्री संभव
  • डॉक्यूमेंटेशन के तौर पर उपयोग होता है
इंटरमीडिएट Docker

-p / -P फ्लैग का उपयोग

  • कंटेनर के बाहर पोर्ट उपलब्ध कराने के लिए docker run में अब भी -p या -P विकल्प चाहिए
  • -P विकल्प एक्सपोज़्ड पोर्ट(s) को किसी इफेमरल पोर्ट से ऑटो-मैप कर देगा. कौन-से पोर्ट मैप हुए हैं, देखने के लिए docker ps -a चलाएँ.
  • -p<host port>:<container port> से आप विशिष्ट पोर्ट सेट कर सकते हैं.
इंटरमीडिएट Docker

EXPOSE उदाहरण

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Let the Docker engine know 
# port 8000 should be available
EXPOSE 8000
  • इमेज से एक कंटेनर बनाएँ
    docker run pyserver
    
  • कंटेनर की स्थिति प्रिंट करें
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
इंटरमीडिएट Docker

पोर्ट्स को पहुँचा योग्य बनाना

  • होस्ट से कंटेनर तक टेम्पररी पोर्ट ऑटो-मैप करें
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
इंटरमीडिएट Docker

एक्सपोज़्ड पोर्ट खोजना

  • docker inspect बहुत-सी जानकारी देता है
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
इंटरमीडिएट Docker

Let's practice!

इंटरमीडिएट Docker

Preparing Video For Download...