Sign inSign up

wtyyy/isaaclab

By wtyyy

•Updated 21 days ago

Image
0

2.3K

wtyyy/isaaclab repository overview

English | 中文⁠

⁠IsaacLab Docker Image

⁠Contents

⁠Overview

This image extends wtyyy/ubuntu:24.04 and installs the Isaac Lab environment in /home/user. Build files are available at wty-yy/docker/isaaclab⁠. The image includes:

  • image wtyyy/isaaclab:3.0.0 (sha256:ebbb9de5d2b92c278b71360b8b55d1804277129a739117da5457439fd94d9c62), built on 2026-10-20
  • uv and uv venv at /home/user/isaaclab
  • python packages (change versions in Dockerfile if needed):
    • torch==2.11.0
    • torchvision==0.26.0
    • isaaclab[isaacsim,all]==3.0.0
  • system runtime packages:
    • IsaacSim: libgomp1, libglu1
    • Render & DEBUG: mesa-utils, vulkan-tools, x11-apps

⁠Run

Install nvidia-container-toolkit⁠ first to enable NVIDIA GPU support in Docker.

Run xhost +local:docker on host first to allow accessing X11 from Docker container.

⁠Run as user (UID >= 1000)

Example USER with X11 GUI support + NVIDIA GPU + Vulkan + host network + input devices + mounted cache files + mounted workspace:

# Create cache directories on host first
mkdir -p ${HOME}/isaaclab_docker/.cache/ov
mkdir -p ${HOME}/isaaclab_docker/.nvidia-omniverse

docker run -it --name ${USER}-isaaclab \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  -e DISPLAY \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  --gpus all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro \
  --device /dev/input \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3)" \
  --net=host \
  -v /path/to/Coding:/home/user/Coding \
  -v ${HOME}/isaaclab_docker/.cache/ov:/home/user/.cache/ov \
  -v ${HOME}/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse \
  wtyyy/isaaclab:3.0.0 zsh
  • X11:
    • -e DISPLAY: specify display for X11 forwarding
    • -v "/tmp/.X11-unix:/tmp/.X11-unix": mount X11 socket for GUI
  • --gpus all: enable all GPUs
  • NVIDIA environment variables for GPU rendering and Vulkan support
    • -e NVIDIA_DRIVER_CAPABILITIES=all: enable all NVIDIA driver capabilities
    • -e "__NV_PRIME_RENDER_OFFLOAD=1": for NVIDIA PRIME render offload
    • -e "__GLX_VENDOR_LIBRARY_NAME=nvidia": use NVIDIA GLX library
    • -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro: mount NVIDIA Vulkan ICD for Vulkan support
  • --device /dev/input and -e EXTRA_GIDS="$(getent group input | cut -d: -f3)": allow access to input devices and add input group for permissions
  • --net=host: use host network
  • -v /path/to/Coding:/home/user/Coding: mount local workspace into container (optional)
  • -v ${HOME}/isaaclab_docker/.cache/ov:/home/user/.cache/ov and -v ${HOME}/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse: mount cache directories to persist assets

If you exit the container and want to enter it again later:

docker start ${USER}-isaaclab
docker exec -it ${USER}-isaaclab zsh
⁠Run as root (UID = 0)

Running as the root user is not recommended (-u root) because all shell files and caches are generated in the /home/user directory. The following example demonstrates how to create a user on the host and add it to the root group.

# Default root permission
# Reuse the existing user, or create a regular user with a matching primary group.
if ! id user >/dev/null 2>&1; then
  useradd -m -U -s /bin/bash user
fi
usermod -aG root user

# Replace /path/to/Coding with your actual workspace directory.
code_dir="/path/to/Coding"
cache_dir="${HOME}/isaaclab_docker"

mkdir -p "${code_dir}" "${cache_dir}/.cache/ov" "${cache_dir}/.nvidia-omniverse"

# Grant group read/write access; preserve executable-file permissions.
chmod -R g+rwX \
  "${code_dir}" \
  "${cache_dir}/.cache/ov" \
  "${cache_dir}/.nvidia-omniverse"

# Set default group permissions for newly created files and directories.
setfacl -R -d -m g::rwx \
  "${code_dir}" \
  "${cache_dir}/.cache/ov" \
  "${cache_dir}/.nvidia-omniverse"

# Start the container as its regular user and open the mounted workspace.
docker run -it --name user-isaaclab \
  -e DEFAULT_UID="$(id -u user)" \
  -e DEFAULT_GID="$(id -g user)" \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3),0" \
  -e DISPLAY \
  -e OMNI_KIT_ACCEPT_EULA=YES \
  -e ACCEPT_EULA=Y \
  --gpus all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  -v "/etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro" \
  --device /dev/input \
  --net=host \
  -v "${code_dir}:/home/user/Coding" \
  -v "${cache_dir}/.cache/ov:/home/user/.cache/ov" \
  -v "${cache_dir}/.nvidia-omniverse:/home/user/.nvidia-omniverse" \
  -w /home/user/Coding \
  wtyyy/isaaclab:3.0.0 zsh

⁠中文

⁠目录

⁠概览

该镜像基于 wtyyy/ubuntu:24.04,并在 /home/user 中安装 Isaac Lab 环境,构建代码位于 wty-yy/docker/isaaclab⁠,包含:

  • 镜像 wtyyy/isaaclab:3.0.0(sha256:ebbb9de5d2b92c278b71360b8b55d1804277129a739117da5457439fd94d9c62),构建于 2026-10-20
  • uv 以及位于 /home/user/isaaclab 的 uv venv
  • Python 包,可按需在 Dockerfile 中修改版本:
    • torch==2.11.0
    • torchvision==0.26.0
    • isaaclab[isaacsim,all]==3.0.0
  • 系统运行时包:
    • IsaacSim:libgomp1、libglu1
    • 渲染与调试:mesa-utils、vulkan-tools、x11-apps

⁠运行

先安装 nvidia-container-toolkit⁠,才能在 Docker 中启用 NVIDIA GPU 支持。

先在宿主机上运行 xhost +local:docker,以允许 Docker 容器访问 X11。

⁠以普通用户运行(UID >= 1000)

带 X11 图形界面、NVIDIA GPU、Vulkan、host 网络、输入设备、挂载缓存文件和挂载工作区的普通用户示例:

# 先在宿主机创建缓存目录
mkdir -p ${HOME}/isaaclab_docker/.cache/ov
mkdir -p ${HOME}/isaaclab_docker/.nvidia-omniverse

docker run -it --name ${USER}-isaaclab \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  -e DISPLAY \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  --gpus all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro \
  --device /dev/input \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3)" \
  --net=host \
  -v /path/to/Coding:/home/user/Coding \
  -v ${HOME}/isaaclab_docker/.cache/ov:/home/user/.cache/ov \
  -v ${HOME}/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse \
  wtyyy/isaaclab:3.0.0 zsh
  • X11:
    • -e DISPLAY:指定 X11 转发显示
    • -v "/tmp/.X11-unix:/tmp/.X11-unix":挂载 X11 socket 以支持 GUI
  • --gpus all:启用全部 GPU
  • NVIDIA 环境变量用于 GPU 渲染和 Vulkan 支持
    • -e NVIDIA_DRIVER_CAPABILITIES=all:启用全部 NVIDIA 驱动能力
    • -e "__NV_PRIME_RENDER_OFFLOAD=1":用于 NVIDIA PRIME render offload
    • -e "__GLX_VENDOR_LIBRARY_NAME=nvidia":使用 NVIDIA GLX 库
    • -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro:挂载 NVIDIA Vulkan ICD 以支持 Vulkan
  • --device /dev/input 和 -e EXTRA_GIDS="$(getent group input | cut -d: -f3)":允许访问输入设备并将用户加入 input 组以获取权限
  • --net=host:使用宿主机网络
  • -v /path/to/Coding:/home/user/Coding:将本地工作区挂载到容器中,可选
  • -v ${HOME}/isaaclab_docker/.cache/ov:/home/user/.cache/ov 和 -v ${HOME}/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse:挂载缓存目录以持久化资源

如果退出容器后想再次进入:

docker start ${USER}-isaaclab
docker exec -it ${USER}-isaaclab zsh
⁠以 root 运行(UID = 0)

不推荐以 root 用户运行(-u root),因为所有 shell 文件和缓存都生成在 /home/user 目录下。下面的示例演示如何在宿主机创建一个用户并将其加入 root 组。

# 默认 root 权限
# 复用已有用户,或创建普通用户及同名主组。
if ! id user >/dev/null 2>&1; then
  useradd -m -U -s /bin/bash user
fi
usermod -aG root user

# 将 /path/to/Coding 替换为实际工作区目录。
code_dir="/path/to/Coding"
cache_dir="${HOME}/isaaclab_docker"

mkdir -p "${code_dir}" "${cache_dir}/.cache/ov" "${cache_dir}/.nvidia-omniverse"

# 授予组读写权限,并保留可执行文件的执行权限。
chmod -R g+rwX \
  "${code_dir}" \
  "${cache_dir}/.cache/ov" \
  "${cache_dir}/.nvidia-omniverse"

# 为新建文件和目录设置默认组权限。
setfacl -R -d -m g::rwx \
  "${code_dir}" \
  "${cache_dir}/.cache/ov" \
  "${cache_dir}/.nvidia-omniverse"

# 以容器内普通用户启动,并进入挂载的工作区。
docker run -it --name user-isaaclab \
  -e DEFAULT_UID="$(id -u user)" \
  -e DEFAULT_GID="$(id -g user)" \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3),0" \
  -e DISPLAY \
  -e OMNI_KIT_ACCEPT_EULA=YES \
  -e ACCEPT_EULA=Y \
  --gpus all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  -v "/etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro" \
  --device /dev/input \
  --net=host \
  -v "${code_dir}:/home/user/Coding" \
  -v "${cache_dir}/.cache/ov:/home/user/.cache/ov" \
  -v "${cache_dir}/.nvidia-omniverse:/home/user/.nvidia-omniverse" \
  -w /home/user/Coding \
  wtyyy/isaaclab:3.0.0 zsh

Tag summary

Content type

Image

Digest

sha256:517f58ff4…

Size

12.9 GB

Last updated

21 days ago

docker pull wtyyy/isaaclab:3.0.0