How can I run multiple isaac-sim container in one machine and connect them with browser

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 :

  1. 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?

  2. 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.

1 Like

Thanks for the feedback. I’ve file a ticket [OM-34828] to open up port 8899 for user to edit.

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.

what do you mean by “not correctly config”? I manage to run several isaac containers in one machine and it works well.


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

and someone meet the same issue that container can not access nucleus server:

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.

1 Like

Are there many ports that are hard coded in the container? like 49100 etc.

That port is used by the Live-streaming server in Kit SDK (both native and container). It is currently not reconfigurable in the app but you can remap it on your host or your container.
Please see: Using Omniverse Streaming Client — Omniverse Streaming Client documentation