डॉकटर रचना, नेट में कंटेनर चलाना: मेजबान


102

मैं "होस्ट" नेट में docker-compose का उपयोग करके 3 सेवाएं देना चाहता हूं। यहाँ मेरे docker-compose.yml फ़ाइल है:

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"

मुझे निम्नलिखित त्रुटि मिली:

$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'

मैं विंडोज़ पर boot2docker का उपयोग कर रहा हूं।

डॉकर, और डॉकर-रचना संस्करण:

$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a

अगर मैं docker run --net = "host"सब कुछ ठीक से काम करके मैन्युअल रूप से सभी सेवाओं को चलाता हूं ।

प्रलेखन में मैंने पढ़ा है कि नेट कमांड को डॉकटर-कम्पोज़ में समर्थित किया गया है :

जाल

नेटवर्किंग मोड। डॉक क्लाइंट - नेट पैरामीटर के समान मानों का उपयोग करें।

नेट: "ब्रिज"

नेट: "कोई नहीं"

नेट: "कंटेनर: [नाम या आईडी]"

शुद्ध: "मेजबान"

https://docs.docker.com/v1.6/compose/yml/#net

मैं क्या गलत कर रहा हूं?


@ Andy-shinn के उत्तर के आधार पर अद्यतन, पैरामीटर कहा जाता है network_mode: "host"। जैसा कि डॉकर में प्रलेखित संस्करण 3 #network_mode रचना है
पॉल रूजियक्स

जवाबों:


103

वे दस्तावेज पुराने हैं। मैं अनुमान लगा रहा हूं कि URL में 1.6 डॉकर 1.6 के लिए है, न कि कंपोज 1.6। यहां सही सिंटैक्स देखें : https://docs.docker.com/compose/compose-file/#network_mode । आप network_modev2 YAML प्रारूप का उपयोग करते समय देख रहे हैं ।


यह वास्तव में भ्रामक है ... मैं अभी प्रलेखन लिंक को बुकमार्क करूंगा। network_mode ठीक काम कर रहा है धन्यवाद!
बेनोइट विक्रमराची

जैसा कि मैंने समझा, मैं नेटवर्क_मॉड का उपयोग करता हूं: सेवा के तहत "होस्ट"?
तारास वास्किव

27
ध्यान दें कि network_mode: hostमैक के लिए काम नहीं करेगा
arviman

1
@FlavienVolken मैक पर, एक समाधान मेजबान आईपी का स्पष्ट रूप से उपयोग करना है। कुछ विशेष होस्टनाम है जिनका आप उपयोग कर सकते हैं जो इस (docker_host_domain या ऐसा कुछ, मैं भूल जाता हूं) को इंगित करता हूं।
ooyoyaya

72

बस छपता है

network_mode: "host"


'network_mode' और 'नेटवर्क' को संयोजित नहीं किया जा सकता है। यदि आपके पास पहले से नेटवर्क है - तो यह काम नहीं करेगा।
एलेक्स एफिमोव

1
network_mode: hostमैक के लिए
डॉक

32

आप बस जोड़ने की कोशिश कर सकते हैं

network_mode: "host"

उदाहरण :

version: '2'
services:
  feedx:
    build: web
    ports:
    - "127.0.0.1:8000:8000"
    network_mode: "host"

सूची विकल्प उपलब्ध है

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

https://docs.docker.com/compose/compose-file/#network_mode


क्या इस मामले में पोर्ट अग्रेषण को अनदेखा किया गया है?
toing_toing

3

शायद मैं बहुत देर से जवाब दे रहा हूं। लेकिन मुझे डॉकटर कंपोज़ में होस्ट नेटवर्क को कॉन्फ़िगर करने में भी समस्या हो रही थी। फिर मैंने दस्तावेज़ीकरण को अच्छी तरह से पढ़ा और बदलाव किए और यह काम किया। कृपया ध्यान दें कि यह विन्यास डॉकटर-कम्पोज़िशन "3.7" के लिए है। यहाँ einwohner_net और elk_net_net मेरे उपयोगकर्ता-परिभाषित नेटवर्क हैं जो मेरे आवेदन के लिए आवश्यक हैं। मैं कुछ सिस्टम मेट्रिक्स प्राप्त करने के लिए होस्ट नेट का उपयोग कर रहा हूं।

लिंक टू डॉक्यूमेंटेशन https://docs.docker.com/compose/compose-file/#host-or-none

version: '3.7'
services:
  app:
    image: ramansharma/einwohnertomcat:v0.0.1
    deploy:
      replicas: 1
      ports:
       - '8080:8080'
    volumes:
     - type: bind
       source: /proc
       target: /hostfs/proc
       read_only: true
     - type: bind
       source: /sys/fs/cgroup
       target: /hostfs/sys/fs/cgroup
       read_only: true
     - type: bind
       source: /
       target: /hostfs
       read_only: true
    networks:
     hostnet: {}
    networks:
     - einwohner_net
     - elk_elk_net
networks:
 einwohner_net:
 elk_elk_net:
   external: true
 hostnet:
   external: true
   name: host

2
> केवल तभी उपयोग किया जाता है जब आप डॉक स्टैक कमांड का उपयोग करते हैं। यदि आप docker-compose कमांड का उपयोग करते हैं, तो इसके बजाय network_mode का उपयोग करें।
यहवाद

-8

सर्विसेज.app: 'नेट' के लिए वार्न कॉन्फिग विकल्प हटाएं, यह काम कर सकता है।

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