मैं डोकर-लिखें के साथ नियंत्रित अन्य सेवाओं के साथ चल रहे एक डोकर कंटेनर से पिंग करने की कोशिश कर रहा हूँ। मूल आवश्यकता बाहरी डीबी सर्वर से कनेक्ट करना है, जो काम नहीं कर रहा है। डीबग करने के लिए मैंने बाहरी बॉक्स को पिंग करने का प्रयास किया, जो अपेक्षित रूप से वापस नहीं आया। हालांकि मैं वीएम होस्ट से बाहरी बॉक्स को पिंग कर सकता हूं।

/etc/hosts में प्रविष्टि है क्योंकि मैंने docker-compose.yml में निम्नलिखित पंक्ति प्रदान की है:

extra_hosts:
     - "externalhostname:10.40.154.27"

डोकर निरीक्षण से निम्नलिखित नेटवर्क विवरण है

"Networks": {
        "echo_service_default": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "python-interpreter",
                "3767f3a7ad80"
            ],
            "NetworkID": "10ca2ec9a1dbc3659cef91014c2c64c8df17e9d720350d1bdd198a53c6c0a946",
            "EndpointID": "c920443c34ff00ffefe2c669bc4b80e121c27d1b8ebc44fa9f5efb16e71561a4",
            "Gateway": "172.19.0.1",
            "IPAddress": "172.19.0.6",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:13:00:06",
            "DriverOpts": null
        }

ifconfig मेजबान में देता है

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:b6ff:fe86:fb71  prefixlen 64  scopeid 0x20<link>
        ether 02:42:b6:86:fb:71  txqueuelen 0  (Ethernet)
        RX packets 204  bytes 90455 (88.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5080  bytes 459752 (448.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Docker-compose.yml . से सेवा प्रविष्टि

  python-interpreter:
image: image name
hostname: python-interpreter
volumes:
 - /scratch/share:/var/python-interpreter/data:ro
 - shared:/var/shared
extra_hosts:
 - "externalhostname:10.40.154.27"

इसलिए सेवा बिना -p विकल्प वाले ब्रिज नेटवर्क के साथ चल रही है

0
P RAY 18 फरवरी 2020, 11:10
आपका ओएस क्या है?
 – 
Mihai
18 फरवरी 2020, 12:06
यह linux el7 पर है। डोकर-लिखें 2
 – 
P RAY
18 फरवरी 2020, 13:34
तब यह अजीब लगता है कि यह काम नहीं करता है। मैंने कई बार एक ही सेटअप का इस्तेमाल किया है। क्या आप सुनिश्चित कर सकते हैं कि आईपी सही है? docker-compose down भी चलाएँ और सुनिश्चित करें कि कंपोज़ नेटवर्क भी हटा दिया गया है। फिर डॉकर-कंपोज़ अप के साथ पुनरारंभ करें और पुनः प्रयास करें। मुझे बताएं कि क्या यह इसे ठीक करता है
 – 
Mihai
19 फरवरी 2020, 11:05
डॉकटर कंपोज़ को पुनरारंभ करना काम नहीं करता है
 – 
P RAY
20 फरवरी 2020, 12:23

2 जवाब

आपके द्वारा साझा किए गए docker-compose.yml में, पायथन-दुभाषिया सेवा की एक अतिरिक्त_होस्ट परिभाषा है, लेकिन नेटवर्क परिभाषा नहीं है, आपको एक नेटवर्क को परिभाषित करने की आवश्यकता है, उदाहरण के लिए:

  python-interpreter:
image: image name
hostname: python-interpreter
volumes:
- /scratch/share:/var/python-interpreter/data:ro
- shared:/var/shared
networks:
  - backend      

और अपने docker-compose.yml के अंत में नेटवर्क को परिभाषित करें:

    networks:
  backend:
    driver: bridge 
0
Mucio Zarate 19 फरवरी 2020, 07:51
प्रतिक्रिया देने के लिए धन्यवाद, लेकिन मैंने सोचा कि अगर मैं कुछ भी उल्लेख नहीं करता तो पुल डिफ़ॉल्ट रूप से होता है। ऐसा लगता है कि मिहाई वही कह रही है। क्या आपका मतलब है कि मुझे उन बाहरी बंदरगाहों के लिए बंदरगाह खंड के साथ बंदरगाह अग्रेषण प्रदान करने की ज़रूरत है जिन्हें मुझे एक्सेस करने की आवश्यकता है? आउटबाउंड बंदरगाहों के लिए भी? कृपया विस्तार से बताएं।
 – 
P RAY
20 फरवरी 2020, 11:32

ऐसा लगता है कि यह अब काम कर रहा है .. मैं होस्ट मोड में बदल गया हूं

python-interpreter:
      image: ...
    hostname: ...
    **network_mode: host**
    volumes:
     ...
    extra_hosts:
     - "whf00aqw.in.oracle.com:10.40.154.27"

मुझे विश्वास है (निश्चित नहीं।) क्योंकि यह ब्रिज पर जा रहा था, यह होस्ट के भीतर नेटवर्क एक्सेस को प्रतिबंधित कर रहा था। अब जब मैंने इसे होस्ट बना लिया है, तो यह होस्ट नेटवर्क को साझा करने और एक्सेस करने में सक्षम है।

0
P RAY 20 फरवरी 2020, 13:02