web-dev-qa-db-fra.com

Docker compose, exécute des conteneurs dans le réseau: hôte

Je veux générer 3 services dans le réseau "Host" en utilisant docker-compose. Voici mon fichier docker-compose.yml:

version: '2'
services:
  mysql:
    image: mysql
    net: "Host"
  nginx:
    image: nginx
    net: "Host"
  app:
    image: Tomcat
    net: "Host"

J'ai eu l'erreur suivante:

$ 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'

J'utilise boot2docker sur Windows.

Docker, et la version Docker-compose:

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

Si je lance tous les services manuellement en utilisant docker run --net = "Host" tout fonctionne correctement.

Dans la documentation, j'ai lu que la commande net est prise en charge dans docker-compose :

net

Mode de mise en réseau. Utilisez les mêmes valeurs que le paramètre --net du client docker.

net: "pont"

net: "aucun"

net: "conteneur: [nom ou id]"

net: "hôte"

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

Qu'est-ce que je fais mal?

74

Ces documents sont obsolètes. Je suppose que le 1.6 dans l'URL est pour Docker 1.6, pas Compose 1.6. Vérifiez la syntaxe correcte ici: https://docs.docker.com/compose/compose-file/#network_mode . Vous recherchez network_mode lorsque vous utilisez le format v2 YAML.

83
Andy Shinn

Juste imprimer

network_mode: "Host"

56
Andrey

vous pouvez essayer d'ajouter

network_mode: "Host"

exemple :

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

option de liste disponible

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

7
Sarath Ak

Peut-être que je réponds très tard. Mais j'avais également un problème pour configurer le réseau hôte dans la composition de menu fixe. Ensuite, j'ai lu la documentation à fond et fait les modifications et cela a fonctionné. Veuillez noter que cette configuration concerne la version "3.7" de docker-compose. Ici einwohner_net et elk_net_net sont les réseaux définis par l'utilisateur requis pour mon application. J'utilise Host net pour obtenir des métriques système.

Lien vers la documentation 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
0
Raman Sharma