Compose: services.xxx.networks berisi {"ExtNet": {"ipv4_address": "192.168.1.11"}}, yang merupakan jenis yang tidak valid, seharusnya berupa string

Dibuat pada 13 Mar 2017  ·  4Komentar  ·  Sumber: docker/compose

Lingkungan:

`` versi docker-compose
docker-compose versi 1.11.2, build dfed245
versi docker-py: 2.1.0
Versi CPython: 2.7.5
Versi OpenSSL: OpenSSL 1.0.1e-fips 11 Feb 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```

Skenario:

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

Kesalahan:

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.

Diharapkan:

  • Kemampuan untuk menetapkan IP Statis dari ExtNet ke kontainer pekerja galangan xxx dalam contoh di atas.
kinquestion

Komentar yang paling membantu

Sebenarnya, konfigurasi kedua itu juga salah. networks bisa berupa daftar string atau pemetaan (itulah nama YAML untuk python dict ). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Misalnya, berikut adalah format yang valid untuk konfigurasi yang Anda inginkan:

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

Semua 4 komentar

Memperbarui

  • Menambahkan ExtNet dengan sendirinya ke penampung tampaknya tidak masalah:
services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11

Tampaknya jika salah satu item di "services.xxx.networks" adalah string (dalam hal ini, "IntNet"), semua item tersebut diharapkan menjadi string.
Apakah mungkin untuk mengubah "services.xxx.networks" untuk mengharapkan tuple?

Sebenarnya, konfigurasi kedua itu juga salah. networks bisa berupa daftar string atau pemetaan (itulah nama YAML untuk python dict ). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Misalnya, berikut adalah format yang valid untuk konfigurasi yang Anda inginkan:

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

Keren itu berhasil. Terima kasih banyak :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat