English | 中文
This image extends wtyyy/ubuntu:24.04 and installs the Isaac Lab environment in /home/user with:
uv and uv venv at /home/user/isaaclabDockerfile if needed):
torch==2.7.0torchvision==0.22.0isaaclab[isaacsim,all]==2.3.2.post1libgomp1, 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:2.3.2.post1 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
adduser -M -N user # create user without home directory and group
usermod -aG root user # add user to root group to have permission to access group files
mkdir -p ${HOME}/isaaclab_docker/.cache/ov
mkdir -p ${HOME}/isaaclab_docker/.nvidia-omniverse
# chmod: set group read/write/execute permissions for mount directories
# setfacl: set default group permissions for newly created files/dirs in mount directories
chmod -R g+rwx ${HOME}/isaaclab_docker/.cache/ov
setfacl -R -d -m g::rwx ${HOME}/isaaclab_docker/.cache/ov
chmod -R g+rwx ${HOME}/isaaclab_docker/.nvidia-omniverse
setfacl -R -d -m g::rwx ${HOME}/isaaclab_docker/.nvidia-omniverse
chmod -R g+rwx /path/to/Coding # if you want to mount workspace
setfacl -R -d -m g::rwx /path/to/Coding
docker run -it --name user-isaaclab \
-e DEFAULT_UID="$(id -u user)" \
-e DEFAULT_GID="$(id -g user)" \
-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)" \
-e EXTRA_GIDS="$(getent group root | cut -d: -f3)" \
--net=host \
-v /path/to/Coding:/home/user/Coding \
-v /home/user/isaaclab_docker/.cache/ov:/home/user/.cache/ov \
-v /home/user/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse \
wtyyy/isaaclab:2.3.2.post1 zsh
该镜像基于 wtyyy/ubuntu:24.04,并在 /home/user 中安装 Isaac Lab 环境,包含:
uv 以及位于 /home/user/isaaclab 的 uv venvDockerfile 中修改版本:
torch==2.7.0torchvision==0.22.0isaaclab[isaacsim,all]==2.3.2.post1libgomp1、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:2.3.2.post1 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 权限
adduser -M -N user # 创建不带 home 目录和组的用户
usermod -aG root user # 将用户加入 root 组,获得访问组文件的权限
mkdir -p ${HOME}/isaaclab_docker/.cache/ov
mkdir -p ${HOME}/isaaclab_docker/.nvidia-omniverse
# chmod: 为挂载目录设置组读/写/执行权限
# setfacl: 为挂载目录中新创建的文件/目录设置默认组权限
chmod -R g+rwx ${HOME}/isaaclab_docker/.cache/ov
setfacl -R -d -m g::rwx ${HOME}/isaaclab_docker/.cache/ov
chmod -R g+rwx ${HOME}/isaaclab_docker/.nvidia-omniverse
setfacl -R -d -m g::rwx ${HOME}/isaaclab_docker/.nvidia-omniverse
chmod -R g+rwx /path/to/Coding # 如果你要挂载工作区
setfacl -R -d -m g::rwx /path/to/Coding
docker run -it --name user-isaaclab \
-e DEFAULT_UID="$(id -u user)" \
-e DEFAULT_GID="$(id -g user)" \
-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)" \
-e EXTRA_GIDS="$(getent group root | cut -d: -f3)" \
--net=host \
-v /path/to/Coding:/home/user/Coding \
-v /home/user/isaaclab_docker/.cache/ov:/home/user/.cache/ov \
-v /home/user/isaaclab_docker/.nvidia-omniverse:/home/user/.nvidia-omniverse \
wtyyy/isaaclab:2.3.2.post1 zsh
Content type
Image
Digest
sha256:3a96193cb…
Size
15.2 GB
Last updated
3 days ago
docker pull wtyyy/isaaclab:3.0-ea