English | 中文
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:
wtyyy/isaaclab:3.0.0 (sha256:ebbb9de5d2b92c278b71360b8b55d1804277129a739117da5457439fd94d9c62), built on 2026-10-20uv and uv venv at /home/user/isaaclabDockerfile if needed):
torch==2.11.0torchvision==0.26.0isaaclab[isaacsim,all]==3.0.0libgomp1, libglu1mesa-utils, vulkan-tools, x11-appsInstall
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.
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
-e DISPLAY: specify display for X11 forwarding-v "/tmp/.X11-unix:/tmp/.X11-unix": mount X11 socket for GUI--gpus all: enable all GPUs-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 assetsIf you exit the container and want to enter it again later:
docker start ${USER}-isaaclab
docker exec -it ${USER}-isaaclab zsh
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-20uv 以及位于 /home/user/isaaclab 的 uv venvDockerfile 中修改版本:
torch==2.11.0torchvision==0.26.0isaaclab[isaacsim,all]==3.0.0libgomp1、libglu1mesa-utils、vulkan-tools、x11-apps先安装
nvidia-container-toolkit,才能在 Docker 中启用 NVIDIA GPU 支持。
先在宿主机上运行 xhost +local:docker,以允许 Docker 容器访问 X11。
带 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
-e DISPLAY:指定 X11 转发显示-v "/tmp/.X11-unix:/tmp/.X11-unix":挂载 X11 socket 以支持 GUI--gpus all:启用全部 GPU-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 用户运行(-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
Content type
Image
Digest
sha256:517f58ff4…
Size
12.9 GB
Last updated
21 days ago
docker pull wtyyy/isaaclab:3.0.0