Docker Isaac Sim¶
This webpage is directly generated from the README of j3soon/docker-isaac-sim. Please refer to the repository for additional information such as the Dockerfiles.
Unofficial minimal dockerfile for Isaac Sim.
This is often useful in scenarios when you are using a custom base image and want to install Isaac Sim in it. For an example, one may want to use a custom base image for ROS2 and install Isaac Sim in it.
Prerequisites¶
Official Docker Images¶
Before diving into the unofficial docker images, let's first see how to use the official images.
For using the official Isaac Sim docker images, please follow the official guide, the commands should be something like below.
Headless mode:
docker pull nvcr.io/nvidia/isaac-sim:4.5.0
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
nvcr.io/nvidia/isaac-sim:4.5.0
# in the container
./runheadless.sh
For using WebRTC streaming, wait until the streaming is ready, you should see something like this:
Download and use the Isaac Sim WebRTC Streaming Client as mentioned in the official guide.
For WebRTC streaming in Isaac Sim 4.2 and earlier, run the following command:
Wait until the streaming is ready, you should see something like this:Visit http://127.0.0.1:8211/streaming/webrtc-demo/?server=127.0.0.1.
Note that the URL must contain the IP address of the host machine, not the host/domain name.
GUI mode:
docker pull nvcr.io/nvidia/isaac-sim:4.5.0
xhost +local:docker
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
-v $(pwd):/workspace \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
nvcr.io/nvidia/isaac-sim:4.5.0
# in the container
./runapp.sh
References:
Pip Install¶
Note that pip install Isaac Sim is still in experimental stage. Personally, I have used this method in j3soon/ros2-essentials and have not encountered any issues with it yet.
Build or pull image:
# build the preferred version
docker build -f Dockerfile_isaacsim_4_5_pip -t j3soon/isaac-sim-pip:4.5 .
docker build -f Dockerfile_isaacsim_4_2_pip -t j3soon/isaac-sim-pip:4.2 .
docker build -f Dockerfile_isaacsim_4_1_pip -t j3soon/isaac-sim-pip:4.1 .
docker build -f Dockerfile_isaacsim_4_0_pip -t j3soon/isaac-sim-pip:4.0 .
# or pull the preferred version
docker pull j3soon/isaac-sim-pip:4.5
docker pull j3soon/isaac-sim-pip:4.2
docker pull j3soon/isaac-sim-pip:4.1
docker pull j3soon/isaac-sim-pip:4.0
xhost +local:docker
ISAAC_SIM_VERSION=4.2
docker run --rm -it --runtime=nvidia --gpus all --network=host \
-v ~/docker/isaac-sim-pip/cache/kit:/usr/local/lib/python3.10/site-packages/omni/cache:rw \
-v ~/docker/isaac-sim-pip/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim-pip/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim-pip/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim-pip/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim-pip/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim-pip/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim-pip/documents:/root/Documents:rw \
-v $(pwd):/workspace \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
-v /dev/shm:/dev/shm \
j3soon/isaac-sim-pip:${ISAAC_SIM_VERSION}
# in the container
# For Isaac Sim 4.0 to 4.2, run:
isaacsim omni.isaac.sim
# or WebRTC streaming:
isaacsim omni.isaac.sim.headless.webrtc --no-window
For Isaac Sim 4.5, run the following instead:
For WebRTC streaming usage, see the official Docker images section below.
The slight difference in cache directories between the official Docker image and the pip-installed version is observed by comparing the logs of the Isaac Sim instance in both environments.
To test the ros2 bridge in Isaac Sim, click Isaac Utils > Common Omnigraphs > ROS2 Clock
in the menu and click OK
. Click the play button, and run the following in a new terminal:
docker run --rm -it --network=host -v /dev/shm:/dev/shm osrf/ros:humble-desktop-full bash
# in the container
ros2 topic list
ros2 topic echo /clock
Please note that the ROS2 bridge is not working in Isaac Sim 4.5.0 yet. We're currently working on this issue.
References:
Binary Install¶
Starting from Isaac Sim 4.5.0, the Isaac Sim binary installation is supported.
Build or pull image:
# build the preferred version
docker build -f Dockerfile_isaacsim_4_5_bin -t j3soon/isaac-sim-bin:4.5 .
# or pull the preferred version
docker pull j3soon/isaac-sim-bin:4.5
xhost +local:docker
ISAAC_SIM_VERSION=4.5
docker run --rm -it --runtime=nvidia --gpus all --network=host \
-v ~/docker/isaac-sim-bin/cache/kit:/root/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim-bin/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim-bin/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim-bin/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim-bin/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim-bin/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim-bin/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim-bin/documents:/root/Documents:rw \
-v $(pwd):/workspace \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
-v /dev/shm:/dev/shm \
j3soon/isaac-sim-bin:${ISAAC_SIM_VERSION}
# in the container
~/isaacsim/isaac-sim.sh
# or WebRTC streaming:
~/isaacsim/isaac-sim.streaming.sh
For WebRTC streaming usage, see the official Docker images section below.
References: