可以接收但不能发送Docker容器IPv6消息

问题描述

我正在尝试容器化与IPv6 WPAN网络上的节点通信的应用程序。当我在裸机上运行应用程序时,我可以在网络上进行TX和RX,并且在数据包中的IP地址可以在WPAN上收到匹配节点。在容器中运行时,我可以从节点接收消息,但是消息中的IP地址和端口号与任何节点都不匹配,并且尝试在WPAN上发送TX或ping节点返回为无法访问。 Docker documentation在IPv6上不太亮,所以我不确定是否配置错误

docker-compose.yml中的我的网络配置

networks:
   default:
       driver: bridge
       enable_ipv6: true
       ipam:
          driver: default
         config:
           - subnet: 2001:3984:4989::/64
             gateway: 2001:3984:4989::1

容器的端口映射

    ports:
      - "5000:5000"
      - "5683:5683/udp"

容器中运行的服务器发出的CoAP消息中的RX片段

rsinfo: {
   address: '::ffff:192.168.80.1',family: 'IPv6',port: 51028,size: 13
},

解决方法

我不确定这是否是首选方法(因为它实际上并未桥接WPAN和docker网络),但是我能够通过删除“ networks.default”部分并添加“ network_mode:host”来进行连接。但这引起了一个问题,因为除非我向每个容器添加“ network_mode:host”,否则我无法解析其他容器名称。