Ports müssen nur dann an einen Container durchgereicht werden, wenn man von aussen auf diesem Port in den Container "hinein" will. Also bei Zugriffen auf den Container auf diesem Port. Also wenn im Container bspw. ein Webserver läuft, auf welchen per http:// und https:// zugegriffen werden soll, dann müssen die Ports 80 und 443 an den Container durchgereicht werden. Die Applikation im Container kann durchaus auf einem anderen Port lauschen, da genau das dann von Docker durch das Portmapping geregelt wird. Genau aus diesem Grund kann man dann so Spielchen machen und mehrere identische Container nebeneinander laufen lassen. Um beim obigen Beispiel zu bleiben, könnte man den Webserver-Container einmal mit den Mappings 80:80 und 443:443 und direkt daneben ein zweites Mal mit den Mappings 81:80 sowie 8443:443 starten. Greift man nun auf http://<host-ip> zu, landet man im ersten Container, greift man auf http://<host-ip>:81 zu, landet man im zweiten Container. Selbiges verhalten via https://<host-ip> vs. https://<host-ip>:8443.
Ich weiss jetzt aus dem Stehgreif nicht, was auf dem Port 1880 lauscht aber den KNX-Port 3700 musst Du nur dann durchreichen, wenn im Container auch jemand darauf hört.