← Browse

@isaac-sim/dev-container

B

Sets up and manages the isaaclab_arena Docker container — the single environment used for Arena's development, testing, training, and evaluation. Use when the user asks to set up the dev environment, bootstrap the project, get started on a fresh clone, start developing, build or rebuild the image, start or attach to the container, or run any command inside it. Also covers ./docker/run_docker.sh flag combinations (-r rebuild, -R rebuild without cache, -d/-m/-e custom dataset/model/eval mounts), docker exec usage, and the /isaac-sim/python.sh aliasing.

skillclaude

Install

agr install @isaac-sim/dev-container --target claude

Writes 1 file into .claude/skills/, pinned to git-f8d40b0c.

  • .claude/skills/dev-container/SKILL.md

Document


name: dev-container description: Sets up and manages the isaaclab_arena Docker container — the single environment used for Arena's development, testing, training, and evaluation. Use when the user asks to set up the dev environment, bootstrap the project, get started on a fresh clone, start developing, build or rebuild the image, start or attach to the container, or run any command inside it. Also covers ./docker/run_docker.sh flag combinations (-r rebuild, -R rebuild without cache, -d/-m/-e custom dataset/model/eval mounts), docker exec usage, and the /isaac-sim/python.sh aliasing. allowed-tools: Bash(./docker/run_docker.sh *) Bash(docker exec *) Bash(docker images *) Bash(docker ps *)

Dev Container

Arena uses a single Docker container as the dev, test, training, and eval environment. There is no separate dev container.

Each clone of the repo on the host machine gets its own container, so separate clones can run in parallel. The image (isaaclab_arena:latest) is shared, but the container name is isaaclab_arena-latest for the folder named IsaacLab-Arena and isaaclab_arena-latest-<suffix> for folders named IsaacLab-Arena_<suffix> (run_docker.sh derives the suffix automatically).

Discover this clone's container (once per session)

Never hardcode the name. At the start of a session, resolve the container mounting this clone into ARENA_CONTAINER (empty result = none running, so start one below):

ARENA_CONTAINER=$(docker ps --filter "volume=$(git rev-parse --show-toplevel)" --format '{{.Names}}' | head -1)

Run the commands below in that same shell so $ARENA_CONTAINER stays set (or substitute the literal name).

Start or attach

./docker/run_docker.sh

Idempotent: builds the (shared) image if it does not exist, starts this clone's container if it is not running, then attaches. The container name is auto-derived from the clone directory; pass -s <suffix> to override it.

Common flag combinations

FlagPurpose
-rForce image rebuild
-RForce image rebuild without cache
-d <path>Mount a custom dataset directory
-m <path>Mount a custom model directory
-e <path>Mount a custom eval directory

Example with custom mounts:

./docker/run_docker.sh -d ~/datasets -m ~/models -e ~/eval

Run a command in the already-running container

docker exec "$ARENA_CONTAINER" su $(id -un) -c \
  "cd /workspaces/isaaclab_arena && <command>"

The repo root is mounted at /workspaces/isaaclab_arena inside the container.

Python invocation

Inside the container, python is aliased to /isaac-sim/python.sh. Both forms work, but prefer /isaac-sim/python.sh explicitly in docker exec invocations from outside the container, where the alias is not active.

Verify

A container is up and importable when:

docker exec "$ARENA_CONTAINER" su $(id -un) -c \
  "/isaac-sim/python.sh -c 'import isaaclab_arena; print(isaaclab_arena.__file__)'"

prints a path under /workspaces/isaaclab_arena/.

Trustgrade B

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • passType matchnot applicable to this artifact type

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • warnLicenseno SPDX license detected

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-f8d40b0cba842026-07-31