Docker 撰写网络 - 忽略优先级属性

Dor*_*may 6 docker docker-compose

我编写了 docker-compose.yaml 文件,其中包含 4 个网络接口,这些接口在挂载到 docker 容器时需要按特定顺序。

\n

Docker 引擎版本:19.03

\n

Docker-compose 版本:2.4.1

\n

我们使用macvlan驱动程序作为系统的一部分,以便在主机接口之间传输 L2 数据包。\n我们用来托管所有内容的 docker 容器基于 ubuntu:18.04

\n
networks:\n    sim1:\n       name: sim1\n       driver: macvlan\n       driver_opts:\n           parent: ens20\n           macvlan_mode: bridge\n       ipam:\n           config:\n           - subnet: 192.3.0.0/16\n             ip_range: 192.3.1.0/24\n    sim2:\n       name: sim2\n       driver: macvlan\n       driver_opts:\n           parent: ens21\n           macvlan_mode: bridge\n       ipam:\n           config:\n           - subnet: 192.4.0.0/16\n             ip_range: 192.4.1.0/24\n    sim3:\n       name: sim1\n       driver: macvlan\n       driver_opts:\n           parent: ens20\n           macvlan_mode: bridge\n       ipam:\n           config:\n           - subnet: 192.5.0.0/16\n             ip_range: 192.5.1.0/24\n    sim4:\n       name: sim1\n       driver: macvlan\n       driver_opts:\n           parent: ens20\n           macvlan_mode: bridge\n       ipam:\n           config:\n           - subnet: 192.6.0.0/16\n             ip_range: 192.6.1.0/24\n
Run Code Online (Sandbox Code Playgroud)\n

我看到有一个属性叫做:priority,该属性允许根据您在 compose.yaml 文件上指定的指标来组织网络接口。

\n
\n

优先级指示 Compose 实现应该将 service\xe2\x80\x99s 容器连接到其网络的顺序。如果未指定,则默认值为 0。

\n
\n

Docker-compose 优先级

\n

当尝试在 yaml 文件上应用此优先级功能时,我没有收到任何错误和警告,只是在 docker 端被忽略,并且在执行 ifconfig 时,我发现接口的顺序错误。

\n

这是 ifconfig 的输出(过滤结果后)

\n
eth0: sim1\neth1: sim4\neth2: sim3\neth3: sim2\n
Run Code Online (Sandbox Code Playgroud)\n
eth0: sim1\neth1: sim4\neth2: sim3\neth3: sim2\n
Run Code Online (Sandbox Code Playgroud)\n

我在互联网上进行了搜索,但没有任何运气,发现有很多人遇到过这个但没有任何运气。

\n

Github 问题

\n

Bes*_*rks 0

网络应按字母顺序连接。您可以在这个要点中看到这种行为的演示。我认为问题出在您的撰写文件中。在该networks:部分下您有:

sim3:
  name: sim1
Run Code Online (Sandbox Code Playgroud)

sim4:
  name: sim1
Run Code Online (Sandbox Code Playgroud)

sim3请注意和的名称如何sim4设置为sim1

如果您以正确的顺序使这些全部唯一并摆脱优先级设置,那么它应该按预期工作。

services:
  app1:
    image: nginx:latest
    command: "tail -f /dev/null"
    networks:
      - sim1
      - sim2
      - sim3
      - sim4

networks:
  sim1:
    name: sim1
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.3.0.0/16
        ip_range: 192.3.1.0/24
  sim2:
    name: sim2
    driver: macvlan
    driver_opts:
      parent: ens21
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.4.0.0/16
        ip_range: 192.4.1.0/24
  sim3:
    name: sim3
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.5.0.0/16
        ip_range: 192.5.1.0/24
  sim4:
    name: sim4
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.6.0.0/16
        ip_range: 192.6.1.0/24
Run Code Online (Sandbox Code Playgroud)