I’m using docker to start multiple isaac sim container in one machine, trying to mapping different host port to the docker port. But it didn’t work, here is a few question :
what ports do I need to map ? In the official doc it 's 8211 which used to connect the streaming client ,and I found another port is 8899, which is hard-coded in the client’s file. However, when I start the docker I can see that docker maps several ranges of ports, are all these ports used ? Do I need to map them to different host port as well?
the client’s html file has hard-coded the web-socket port to 8899. Does that mean I must modify the client’s source code to connect to a different port ?
Hi. The default port for the html server is 8211. You can run another instance of Isaac Sim with a different port using this flag --/exts/omni.services.transport.server.http/port=8311. Technically, you can run another browser tab and connect to 8311 but currently we are seeing some issues.
thanks for your reply. I managed to solve this problem by redirecting 8899 and 8211 port to different host port , using docker cli -p flags.
It turned out that the streaming client is only using 8899 port to transfer visual data. And 8211 port is just used for getting the streaming client files. So I cloned the streaming files ( html, js ,css …) into my local machine, and modified the hard-coded request url to a dynamic one, which can be changed according to the given parameters. Then I can connect different isaac-sim in one server machine.
This solution may need some coding work.
have you met the issue that nucleus server not correctly config ?
when I run tow container with different port I occurs;
but when I just run one container with ‘–network host’ command params , nucleus server is correct.
just like this; the issacsim container can not find nulceus server if I run it using the command " sudo docker run --entrypoint ./runheadless.websocket.sh --gpus ‘“device=0”’ -e “ACCEPT_EULA=Y” -p 8899:8899 -p 8211:8211 nvcr.io/nvidia/isaac-sim:2021.1.1" , but if I use “sudo docker run --entrypoint ./runheadless.websocket.sh --gpus ‘“device=0”’ -e “ACCEPT_EULA=Y” --network=host nvcr.io/nvidia/isaac-sim:2021.1.1” , It works well
the default docker network type is bridge mode. So maybe there’s connection problem in bridge mode. I’m working with isaac locally, so I didn’t care much about the server warning.
You can now change the WebSocket port 8899 with a flag in Isaac Sim 2021.2.1. Please see: https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_faq.html#change-websocket-ports
This will allow running multiple containers of Isaac Sim on an instance. However, you can only have one running Nucleus on an instance. I would recommend using a separate dedicated instance/machine for Nucleus and have each container accessing that one remote Nucleus.
Can you share an example of how to change Omniverse Streaming Client connection port so that I can connect to multiple workstations on the same computer simultaneously.
Hi. You can’t change ports on Omniverse Streaming Client but you can do the remapping on the OS level.
Other than remapping ports in the OS, you can also use docker container with different static IP on a single host and OV Streaming Client can connect to each container separately since they have different IP addresses.