Compose: services.xxx.networks contient {"ExtNet": {"ipv4_address": "192.168.1.11"}}, qui est un type non valide, il doit s'agir d'une chaîne

Créé le 13 mars 2017  ·  4Commentaires  ·  Source: docker/compose

Environnement:

`` `` version docker-compose
docker-compose version 1.11.2, build dfed245
version docker-py: 2.1.0
Version CPython: 2.7.5
Version OpenSSL: OpenSSL 1.0.1e-fips 11 février 2013

```uname -srvmpio
Linux 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux```

Scénario:

version: '2.1'

services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11
      - IntNet

networks:
  ExtNet:
    driver: macvlan
    driver_opts:
      parent: enp3s0
    ipam:
      config:
        - gateway: 192.168.1.1
          ip_range: 192.168.1.10/28
          subnet: 192.168.1.0/24
  IntNet:
    internal: True
    driver: bridge
    ipam:
      config:
        - ip_range: 10.0.0.0/16
          subnet: 10.0.0.0/16

Erreur:

services.xxx.networks contains {"ExtNet": {"ipv4_address": "192.168.1.11"}}, which is an invalid type, it should be a string

# Tried docker compose yaml version 2.0, 2.1 and 3.0.

Attendu:

  • La possibilité d'attribuer une adresse IP statique d'ExtNet au conteneur docker xxx dans l'exemple ci-dessus.
kinquestion

Commentaire le plus utile

En fait, cette deuxième configuration est également incorrecte. networks est soit une liste de chaînes, soit un mappage (c'est le nom de YAML pour dict de python). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Par exemple, voici un format valide pour la configuration souhaitée:

services:
  xxx:
    image: xxx:latest
    networks:
      ExtNet:
        ipv4_address: 192.168.1.11
      IntNet: {}

Tous les 4 commentaires

Mettre à jour

  • L'ajout d'ExtNet par lui-même au conteneur semble être OK:
services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11

Il semble que si l'un des éléments de "services.xxx.networks" est une chaîne (dans ce cas, "IntNet"), il s'attend à ce que tous les éléments soient une chaîne.
Serait-il possible de changer "services.xxx.networks" pour attendre un tuple?

En fait, cette deuxième configuration est également incorrecte. networks est soit une liste de chaînes, soit un mappage (c'est le nom de YAML pour dict de python). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Par exemple, voici un format valide pour la configuration souhaitée:

services:
  xxx:
    image: xxx:latest
    networks:
      ExtNet:
        ipv4_address: 192.168.1.11
      IntNet: {}

Cool ça marche. Merci beaucoup :)

Cette page vous a été utile?
0 / 5 - 0 notes