Compose: services.xxx.networks包含{“ ExtNet”:{“ ipv4_address”:“ 192.168.1.11”}},这是无效的类型,应为字符串

创建于 2017-03-13  ·  4评论  ·  资料来源: docker/compose

环保:

docker-compose版本
docker-compose版本1.11.2,构建dfed245
docker-py版本:2.1.0
CPython版本:2.7.5
OpenSSL版本:OpenSSL 1.0.1e-fips 2013年2月11日

```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```

场景:

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

错误:

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.

预期:

  • 在上面的示例中,可以将来自ExtNet的静态IP分配给xxx docker容器。
kinquestion

最有用的评论

实际上,第二种配置也不正确。 networks是字符串列表或映射(这是python的dict的YAML名称)。 https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

例如,这是您所需配置的有效格式:

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

所有4条评论

更新资料

  • 将ExtNet本身添加到容器中似乎可以:
services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11

看来,如果“ services.xxx.networks”中的一项是字符串(在本例中为“ IntNet”),则它期望所有项都是字符串。
可以更改“ services.xxx.networks”以期望元组吗?

实际上,第二种配置也不正确。 networks是字符串列表或映射(这是python的dict的YAML名称)。 https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

例如,这是您所需配置的有效格式:

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

很酷的作品。 非常感谢 :)

此页面是否有帮助?
0 / 5 - 0 等级