2017-03-12 14 views
8

मैं डोकर-compose.vs.debug.yml फ़ाइल में नेटवर्क बनाने के लिए कोशिश कर रहा है नेटवर्क के पहचानकर्ता जोड़नेडोकर लिखें नाम

डोकर नेटवर्क ls ->

NETWORK ID   NAME           DRIVER    SCOPE 
0e1fec1a9a30  dockercompose1163770330_myNetwork   bridge    local 

वहाँ इसे इस तरह नाम के लिए किसी भी विकल्प हैं:

NETWORK ID   NAME           DRIVER    SCOPE 
0e1fec1a9a30  myNetwork         bridge    local 

मुझे अलग-अलग परियोजनाओं पर स्वचालित रूप से दो कंटेनरों को जोड़ने की आवश्यकता है।

उत्तर

7

यदि आपके पास नेटवर्क बनाने वाला डॉकर-कंपोज़ है, तो यह नाम स्वयं ही निर्धारित करेगा। आम तौर पर, यह निर्देशिका का नाम देखता है जहां docker-compose.yml स्थित है, और इसे उपसर्ग के रूप में उपयोग करता है। आपके द्वारा दिखाए गए नाम के आधार पर, ऐसा प्रतीत होता है कि यह डॉकर-compose.yml फ़ाइल dockercompose1163770330 नाम की निर्देशिका में है। यह आपके द्वारा निर्दिष्ट myNetwork नाम के साथ जोड़ता है, और dockercompose1163770330_myNetwork नामक नेटवर्क बनाता है।

यदि आप नेटवर्क के सही नाम को नियंत्रित करना चाहते हैं, तो आपके पास दो विकल्प हैं।

  1. डॉकर-कंपोज़ ("बाहरी" नेटवर्क) के बाहर बनाए गए नेटवर्क का उपयोग करें।
networks: 
    default: 
    external: 
     name: myNetwork 

इसका मतलब कुछ और पहले से ही नेटवर्क बनाया गया है। यदि आपके पास पहले से ऐसा नेटवर्क नहीं है, तो इसे बनाना आसान है।

docker network create myNetwork 
  1. (यदि संभव हो तो) का निर्धारण कैसे दृश्य स्टूडियो के नाम यह पथ, और कुछ स्थिर करने के लिए उस रास्ते बदल जाते हैं। चाहे यह संभव है, या कैसे, मुझे कोई जानकारी नहीं है। लेकिन अगर आप dockercompose1163770330 को नियंत्रित कर सकते हैं और इसे अपनी पसंद के अनुसार कुछ अलग कर सकते हैं, तो आप उससे बनाए गए नेटवर्क नाम की भविष्यवाणी कर सकते हैं।
+0

उत्तर के लिए धन्यवाद, लेकिन मैं कोड से नेटवर्क के निर्माण को स्वचालित करना चाहता हूं (डॉकर-compose.vs.yml फ़ाइल से) यदि नेटवर्क cmd का उपयोग किये बिना मौजूद नहीं है। बाहरी कार्यों के साथ केवल पूर्ण नेटवर्क नाम के साथ विकल्प: dockercompose1163770330_myNetwork, मैं इस बात पर भरोसा नहीं कर सकता कि यह नाम पहचानकर्ता –

+0

@MarkSabakov के कारण समान होगा, यह इसे उस निर्देशिका के आधार पर बनाना है, जिसमें यह पाया गया है। मैं अनुमान लगा रहा हूं कि यह पहचानकर्ता है किसी अन्य टूल से आ रहा है (उदाहरण के लिए वीएस2017 जिसे आपने टैग किया है, या कुछ और)। डॉकर-कंपोज़ स्वयं ही उस नाम को उस निर्देशिका के नाम से प्राप्त करता है जहां इसे संग्रहीत किया जाता है। –

+0

@MarkSabakov [डॉकर कंपोज़ नेटवर्क नहीं बना सकता] (https://github.com/docker/compose/issues/2846) आपके लिए। – Matt

2

मुझे लगता है कि आप एक VS2017 dcproj का उपयोग करते हैं। मैंने डीबीप्रोजेज प्रोजेक्ट में मैन्युअल रूप से नेटवर्क को प्रीबिल्डइवेंट के रूप में नेटवर्क बनाकर हल किया। .dcproj फाइल करने के लिए एक prebuild लक्ष्य जोड़ें:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent"> 
    <Exec Command="echo Creating external docker network" /> 
    <Exec Command="docker network create customnetwork" IgnoreExitCode="true" /> 
</Target> 

फिर अपने डोकर-लिखें फाइलों में आप एक बाहरी नेटवर्क निर्दिष्ट कर सकते हैं:

networks: 
    default: 
    external: 
     name: customnetwork 

आप आवश्यक अन्य परियोजनाओं से पहले dcproj शुरू करने या जोड़ने के लिए नेटवर्क को साझा करने वाली सभी परियोजनाओं के लिए एक ही प्रीबिल्ड निष्पादन।

संबंधित मुद्दे