DDS discovery from windows linux containers to executable on windows host #2610
Replies: 4 comments 6 replies
-
am potentially open to running docker-ce in WSL instead - this allows me to to set network=host on the containers - at which point the first container sees the exe, but none of the others see either of the first two or each other. I can see on wireshark that the first container and the exe are sending lots of UDP, but don't see anything from the others. I have tried forcing UDP via the XML, and mounting shared memory into the containers |
Beta Was this translation helpful? Give feedback.
-
Hi @j-p-e, I have moved your issue to the corresponding forum. As you state, it is not a proper library bug, besides Fast DDS (previously FastRTPS) 1.9.3 being end of life since last month (see our release support). If you need official support for this version you will have to speak with our support team. Nevertheless, I am missing some information in your issue description. You are saying that XML files are used to configure your Fast DDS application but no file has been attached. It would also be helpful to have some more detailed steps to reproduce your use case, for instance the way you launch the docker containers. Finally, Shared Memory Transport was included in Fast DDS release 1.10.0 so you should not be concerned with this transport (and consequently it is not possible that you are using this transport as the issue description says). |
Beta Was this translation helpful? Give feedback.
-
the docker desktop example for linux containers to host (python http server on host at 8000, no port mappings, curl http://host.docker.internal:8000 from linux container) works fine for all three network modes |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Is there an already existing issue for this?
not quite - #1698 is relevant but I have more than one docker container so can't map them all to port 7414/7415 on the host
Expected behavior
More of a question than a bug though I guess it would have been nice if it 'just worked' - we are running a simulation system where we want to use a DDS-capable windows executable for graphics acceleration, running against other docker linux containers (Docker Desktop with WSL2 in linux mode on Win10) that also use DDS, with arbitrary comms between them all, but all on the same machine. eProsima has so far been working great when they're all containers, but the new bit is we need the exe separated out from the rest. One caveat is we are tied to v1.9.3 for the foreseeable (might make a jump to latest later on)
When we have them all as linux containers in the same docker network (hosted direct on linux or in docker-ce on WSL2 on windows, or in docker desktop on windows) everything works fine, we don't need to do any special subscriber/publisher network setup. But now the exe will be on host IP, and because they are linux containers they are not allowed to use network:host mode on docker (and I think from reading another issue this might confuse DDS discovery anyway without the newest shared memory stuff) - so when we run with the windows executable+linux containers setup the docker containers don't DDS-discover the windows executable or vice versa, they all just wait for that missing connection. I'm guessing we just need to change our XML and/or do some basic port forwarding or adjustments to docker network setup.
All suggestions welcome
Current behavior
a process on windows host can't dds discover a docker network group of containers
Steps to reproduce
run a dds enabled process on a windows host, docker desktop, and a dds enabled container
Fast DDS version/commit
v1.9.3
Platform/Architecture
Windows 10 Visual Studio 2019
Transport layer
Default configuration, UDPv4 & SHM
Additional context
No response
XML configuration file
No response
Relevant log output
No response
Network traffic capture
No response
Beta Was this translation helpful? Give feedback.
All reactions