Docker 编写网络 - 忽略优先级 属性
Docker compose networking - Priority property ignored
我编写了 docker-compose.yaml 文件,其中包含 4 个网络接口,这些接口在挂载到 docker 容器时需要按特定顺序排列。
Docker 引擎版本:19.03
Docker-撰写版本:2.4.1
我们正在使用 macvlan
驱动程序作为我们系统的一部分,以便在主机接口之间传输 L2 数据包。
我们用来托管所有内容的 docker 容器基于 ubuntu:18.04
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: sim1
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: sim1
driver: macvlan
driver_opts:
parent: ens20
macvlan_mode: bridge
ipam:
config:
- subnet: 192.6.0.0/16
ip_range: 192.6.1.0/24
我看到有一个名为:priority
的 属性,这个 属性 允许根据您在 compose.yaml 文件中指定的指标组织网络接口。
priority indicates in which order Compose implementation SHOULD connect the service’s containers to its networks. If unspecified, the default value is 0.
尝试在 yaml 文件上应用此优先级功能时,我没有收到任何错误和警告,只是在 docker 端被忽略了,在执行 ifconfig 时,我发现接口出错了订单。
这是 ifconfig 的输出(过滤结果后)
eth0: sim1
eth1: sim4
eth2: sim3
eth3: sim2
services:
app1:
image: nginx:latest
command: "tail -f /dev/null"
networks:
sim1:
priority: 1000
sim2:
priority: 900
sim3:
priority: 800
sim4:
priority: 700
我在网上搜索了一下,发现有很多人都遇到了这个问题。
网络应按字母顺序连接。您可以在 this gist 中看到此行为的演示。我认为问题出在您的撰写文件中。在 networks:
部分下,您有:
sim3:
name: sim1
和
sim4:
name: sim1
注意 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
我编写了 docker-compose.yaml 文件,其中包含 4 个网络接口,这些接口在挂载到 docker 容器时需要按特定顺序排列。
Docker 引擎版本:19.03
Docker-撰写版本:2.4.1
我们正在使用 macvlan
驱动程序作为我们系统的一部分,以便在主机接口之间传输 L2 数据包。
我们用来托管所有内容的 docker 容器基于 ubuntu:18.04
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: sim1
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: sim1
driver: macvlan
driver_opts:
parent: ens20
macvlan_mode: bridge
ipam:
config:
- subnet: 192.6.0.0/16
ip_range: 192.6.1.0/24
我看到有一个名为:priority
的 属性,这个 属性 允许根据您在 compose.yaml 文件中指定的指标组织网络接口。
priority indicates in which order Compose implementation SHOULD connect the service’s containers to its networks. If unspecified, the default value is 0.
尝试在 yaml 文件上应用此优先级功能时,我没有收到任何错误和警告,只是在 docker 端被忽略了,在执行 ifconfig 时,我发现接口出错了订单。
这是 ifconfig 的输出(过滤结果后)
eth0: sim1
eth1: sim4
eth2: sim3
eth3: sim2
services:
app1:
image: nginx:latest
command: "tail -f /dev/null"
networks:
sim1:
priority: 1000
sim2:
priority: 900
sim3:
priority: 800
sim4:
priority: 700
我在网上搜索了一下,发现有很多人都遇到了这个问题。
网络应按字母顺序连接。您可以在 this gist 中看到此行为的演示。我认为问题出在您的撰写文件中。在 networks:
部分下,您有:
sim3:
name: sim1
和
sim4:
name: sim1
注意 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