[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-tao-run-on-docker":3,"mdc-oozaan-key":34,"related-org-nvidia-tao-run-on-docker":2974,"related-repo-nvidia-tao-run-on-docker":3131},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"tao-run-on-docker","run NVIDIA GPU container workloads","Docker conventions for running NVIDIA GPU container workloads — NGC authentication, --gpus flag, mount patterns, env-var passthrough, container inspection, data-root relocation for split-disk hosts, and common error modes. Use when another skill requires running an nvcr.io container or any docker run command on a GPU host. Trigger keywords — docker, docker run, nvcr.io, NGC, --gpus, nvidia-container-toolkit, container image, docker login, docker pull.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Containers","containers","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Docker","docker",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-08-05T05:58:13.538064","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Ftao-run-on-docker","---\nname: tao-run-on-docker\ndescription: Docker conventions for running NVIDIA GPU container workloads — NGC authentication, --gpus flag, mount patterns,\n  env-var passthrough, container inspection, data-root relocation for split-disk hosts, and common error modes. Use when\n  another skill requires running an nvcr.io container or any docker run command on a GPU host. Trigger keywords — docker,\n  docker run, nvcr.io, NGC, --gpus, nvidia-container-toolkit, container image, docker login, docker pull.\nlicense: Apache-2.0\ncompatibility: Requires NVIDIA driver branch 580, CUDA Toolkit 13.0, Docker, and NVIDIA Container Toolkit 1.19.0.\nmetadata:\n  version: \"0.1.0\"\n  author: NVIDIA Corporation\nallowed-tools: Read Bash\ntags:\n- platform\n- docker\n---\n\n# Docker for NVIDIA GPU Workloads\n\nThis skill documents the generic Docker conventions that GPU container workloads rely on. Model and data skills specify **what** image and **what** command to run; this skill covers **how** to run docker in a way that satisfies GPU + NVIDIA container requirements.\n\nSources: official Docker CLI reference (\u003Chttps:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002F>) and NVIDIA Container Toolkit docs.\n\n## Prerequisites\n\n1. **Host GPU runtime** — NVIDIA driver branch 580, CUDA Toolkit 13.0, and NVIDIA Container Toolkit 1.19.0. Check with the `tao-setup-nvidia-gpu-host` skill before any GPU workflow starts.\n2. **Docker** — `docker --version` must return ≥ 20.10. Install: \u003Chttps:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F>.\n3. **NGC API key** for `nvcr.io\u002F*` pulls. Get from \u003Chttps:\u002F\u002Fngc.nvidia.com\u002F>.\n\n```bash\nTAO_SKILL_BANK_ROOT=\"${TAO_SKILL_BANK_ROOT:-$PWD}\"\nSETUP_SCRIPT=\"${TAO_SKILL_BANK_ROOT}\u002Fplatform\u002Ftao-setup-nvidia-gpu-host\u002Fscripts\u002Fsetup-nvidia-gpu-host.sh\"\n\nbash \"$SETUP_SCRIPT\" --backend docker --check-only || {\n  echo \"MISSING: TAO GPU host runtime is not ready.\"\n  echo \"After user approval, run (append --yes for non-interactive agent runs):\"\n  echo \"  bash \\\"$SETUP_SCRIPT\\\" --backend docker --install\"\n  exit 1\n}\n\ndocker --version\ndocker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi\n[ -n \"$NGC_KEY\" ] || echo \"NGC_KEY unset — cannot pull nvcr.io images\"\n```\n\n## NGC authentication\n\n```bash\necho \"$NGC_KEY\" | docker login nvcr.io -u '$oauthtoken' --password-stdin\n```\n\nPersists in `~\u002F.docker\u002Fconfig.json` across reboots. Re-run on `unauthorized` errors.\n\n## `docker run` — canonical flags\n\n```bash\ndocker run \\\n  --gpus all \\                        # all GPUs (requires nvidia-container-toolkit)\n  --rm \\                              # delete container after exit (image is preserved)\n  --shm-size=8g \\                     # shared mem for torchrun \u002F DataLoader\n  -v \u002Fhost\u002Fdata:\u002Fdata \\               # bind-mount input\n  -v \u002Fhost\u002Fresults:\u002Fresults \\         # bind-mount output\n  -e HF_TOKEN -e NGC_KEY \\            # env-var passthrough (values from parent shell)\n  \u003Cimage> \\\n  \u003Ccommand>\n```\n\nNotes:\n\n- `--gpus '\"device=0,1\"'` — specific GPUs (double-quote-escaped). Without nvidia-container-toolkit: `could not select device driver \"\" with capabilities: [[gpu]]`.\n- `--rm` — clean up the container at exit; omit when you want `docker logs` after exit.\n- `--shm-size=8g` — torchrun + PyTorch DataLoaders exhaust the default 64 MB `\u002Fdev\u002Fshm` otherwise; size it for multi-GPU training and raise (e.g. `16g`) if you still hit `Bus error`.\n- `-v host:container` — bind mount; the command references container paths only.\n- `-e VAR` — passthrough from parent shell (no value needed if already set). Use this form for secrets.\n\n## Container name collision\n\n`docker run --name X` fails if a container named `X` already exists. Defensive pattern before reusing a name:\n\n```bash\ndocker stop my-worker 2>\u002Fdev\u002Fnull; docker rm my-worker 2>\u002Fdev\u002Fnull\ndocker run --name my-worker ...\n```\n\n## Detached + exec pattern\n\nFor multi-step workflows on the same container (download → run → post-process), avoid restart cost:\n\n```bash\ndocker run -d --name \u003Cworker> \\\n  --gpus all --shm-size=8g \\\n  -v \u003Cmounts...> -e \u003Cenvs...> \\\n  --entrypoint sh \\\n  \u003Cimage> -c \"tail -f \u002Fdev\u002Fnull\"\n\ndocker exec \u003Cworker> \u003Cstep_1>\ndocker exec \u003Cworker> \u003Cstep_2>\n\ndocker stop \u003Cworker> && docker rm \u003Cworker>\n```\n\n## Pull-if-missing idiom\n\n```bash\ndocker image inspect \u003Cimage> >\u002Fdev\u002Fnull 2>&1 || docker pull \u003Cimage>\n```\n\n## Labels for discovery\n\nTag containers for filtered listing later:\n\n```bash\ndocker run --label tao-toolkit ...\ndocker ps --filter 'label=tao-toolkit'\n```\n\n## Mount patterns\n\nThe container expects its data at conventional paths defined by the image (often `\u002Fdata`, `\u002Fresults`, `\u002Fworkspace\u002Fcheckpoints`). The host side is arbitrary. The command inside docker run references container paths only.\n\n## Env-var conventions\n\nCommon passthrough vars for TAO-style workloads (the calling skill declares which it needs):\n\n- `NGC_KEY` — `nvcr.io` pulls; some runtimes also read at runtime\n- `HF_TOKEN` — gated HuggingFace model downloads\n- `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_ENDPOINT_URL` — S3 I\u002FO inside the container\n- `WANDB_API_KEY` — optional W&B logging\n\nUse `-e VAR` (no `=value`) when the var is in the parent shell. Avoid placing secrets on the command line.\n\nAlternative GPU selection: `-e NVIDIA_VISIBLE_DEVICES=0,1` (or `all`) and `-e NVIDIA_DRIVER_CAPABILITIES=all` instead of `--gpus`. The `--gpus` flag is preferred on standard x86 hosts; the env-var form is older and is what `runtime=nvidia` (Tegra\u002FJetson) requires.\n\n## Container inspection\n\n```bash\ndocker ps                                # running containers only\ndocker ps -a                             # all containers, including exited\ndocker ps --filter status=running --format '{{.Names}} {{.Image}}'\ndocker logs \u003Cname_or_id>                 # stdout\u002Fstderr\ndocker logs -f \u003Cname_or_id>              # follow (tail -f equivalent)\ndocker logs --tail 100 \u003Cname_or_id>      # last N lines\ndocker inspect \u003Cname_or_id>              # full config, mounts, env, network, state (JSON)\ndocker inspect --format '{{.State.Status}}' \u003Cname_or_id>\ndocker stats                             # live CPU\u002Fmem\u002Fnetwork\u002Fblock I\u002FO\ndocker stats --no-stream                 # one snapshot, non-interactive\n```\n\n`docker inspect` is the canonical source of truth for a container's mounts, env, cmd, network, and exit code. Use it to debug why a container isn't behaving as expected.\n\n## Image management\n\n```bash\ndocker pull \u003Cimage>\ndocker image ls\ndocker system df                # disk usage\ndocker system prune -a --volumes # reclaim space — destructive, removes unused images + volumes\n```\n\nPull once per host; `docker run` reuses cached image. NVIDIA images are typically 5-40GB.\n\n## Split-disk data-root relocation\n\nSome cloud GPU providers ship with a small root volume + larger ephemeral. Docker writes to `\u002Fvar\u002Flib\u002Fdocker` on root by default — large images fill it. Check:\n\n```bash\ndf -h \u002F         # root volume size\u002Ffree\nlsblk           # all block devices and mount points\n```\n\nIf `\u002F` is smaller than your total image footprint and there's a larger disk mounted elsewhere, relocate **before pulling images**:\n\n```bash\nsudo systemctl stop docker\nsudo mkdir -p \u003Clarge_volume_path>\u002Fdocker\nsudo rsync -aP \u002Fvar\u002Flib\u002Fdocker\u002F \u003Clarge_volume_path>\u002Fdocker\u002F\nsudo mv \u002Fvar\u002Flib\u002Fdocker \u002Fvar\u002Flib\u002Fdocker.old\n\nsudo tee \u002Fetc\u002Fdocker\u002Fdaemon.json \u003C\u003C'EOF'\n{ \"data-root\": \"\u003Clarge_volume_path>\u002Fdocker\" }\nEOF\n\nsudo systemctl start docker\ndocker info | grep 'Docker Root Dir'\nsudo rm -rf \u002Fvar\u002Flib\u002Fdocker.old\n```\n\n## Networks (multi-container patterns)\n\nFor microservice containers that talk to each other by name, create a docker network and attach containers:\n\n```bash\ndocker network create tao-net\ndocker run --network tao-net --name api ...\ndocker run --network tao-net --name worker ...   # can resolve `api` by name\n```\n\nMost TAO training workloads don't need this — single container per job.\n\n## Common error modes\n\n**`could not select device driver \"\" with capabilities: [[gpu]]`** — NVIDIA Container Toolkit missing or Docker is not configured for the NVIDIA runtime. Run `tao-setup-nvidia-gpu-host` with `--backend docker --install` after user approval (append `--yes` for a non-interactive agent run), then restart Docker.\n\n**`unauthorized: authentication required`** on `docker pull` — NGC key invalid\u002Fmissing. Re-run `docker login nvcr.io`.\n\n**`no space left on device`** — root volume full. `docker system df` to inspect; relocate `data-root` (above) or `docker system prune -a --volumes`.\n\n**`Bus error` \u002F `DataLoader worker exited unexpectedly`** — `\u002Fdev\u002Fshm` too small. Increase shared memory with `--shm-size` (e.g. `--shm-size=16g`).\n\n**`permission denied` on bind-mounted paths** — container UID ≠ host UID. Either `-u $(id -u):$(id -g)`, or pre-create host files owned by the host user, or `chmod 777` (dev only).\n\n**`Error: No such container: \u003Cname>` after `docker run -d`** — container crashed on startup. `docker ps -a` shows exited; `docker logs \u003Cname>` for cause. Drop `--rm` while debugging.\n\n## Scope boundary\n\nThis skill covers the *how* of running docker on a GPU host. Platform-specific layering (how to get onto the host, dispatch via a CLI wrapper) lives in:\n\n- `tao-skill-bank:tao-run-on-brev` — running docker via `brev exec` on a Brev instance\n- `tao-skill-bank:tao-run-platform` — optional Python layer wrapping docker invocations with Job handles, state persistence, and S3 I\u002FO\n\nModel and data skills specify **what** image and command; they defer to this skill for the **how**.\n\n",{"data":35,"body":43},{"name":4,"description":6,"license":26,"compatibility":36,"metadata":37,"allowed-tools":40,"tags":41},"Requires NVIDIA driver branch 580, CUDA Toolkit 13.0, Docker, and NVIDIA Container Toolkit 1.19.0.",{"version":38,"author":39},"0.1.0","NVIDIA Corporation","Read Bash",[42,22],"platform",{"type":44,"children":45},"root",[46,55,82,97,104,178,544,550,621,642,654,863,868,965,971,990,1076,1082,1087,1415,1421,1504,1510,1515,1578,1584,1612,1618,1623,1691,1711,1763,1769,2078,2089,2095,2197,2209,2215,2228,2271,2291,2556,2562,2567,2668,2673,2679,2715,2744,2781,2824,2856,2901,2907,2919,2952,2968],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"docker-for-nvidia-gpu-workloads",[52],{"type":53,"value":54},"text","Docker for NVIDIA GPU Workloads",{"type":47,"tag":56,"props":57,"children":58},"p",{},[59,61,67,69,73,75,80],{"type":53,"value":60},"This skill documents the generic Docker conventions that GPU container workloads rely on. Model and data skills specify ",{"type":47,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":53,"value":66},"what",{"type":53,"value":68}," image and ",{"type":47,"tag":62,"props":70,"children":71},{},[72],{"type":53,"value":66},{"type":53,"value":74}," command to run; this skill covers ",{"type":47,"tag":62,"props":76,"children":77},{},[78],{"type":53,"value":79},"how",{"type":53,"value":81}," to run docker in a way that satisfies GPU + NVIDIA container requirements.",{"type":47,"tag":56,"props":83,"children":84},{},[85,87,95],{"type":53,"value":86},"Sources: official Docker CLI reference (",{"type":47,"tag":88,"props":89,"children":93},"a",{"href":90,"rel":91},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002F",[92],"nofollow",[94],{"type":53,"value":90},{"type":53,"value":96},") and NVIDIA Container Toolkit docs.",{"type":47,"tag":98,"props":99,"children":101},"h2",{"id":100},"prerequisites",[102],{"type":53,"value":103},"Prerequisites",{"type":47,"tag":105,"props":106,"children":107},"ol",{},[108,128,153],{"type":47,"tag":109,"props":110,"children":111},"li",{},[112,117,119,126],{"type":47,"tag":62,"props":113,"children":114},{},[115],{"type":53,"value":116},"Host GPU runtime",{"type":53,"value":118}," — NVIDIA driver branch 580, CUDA Toolkit 13.0, and NVIDIA Container Toolkit 1.19.0. Check with the ",{"type":47,"tag":120,"props":121,"children":123},"code",{"className":122},[],[124],{"type":53,"value":125},"tao-setup-nvidia-gpu-host",{"type":53,"value":127}," skill before any GPU workflow starts.",{"type":47,"tag":109,"props":129,"children":130},{},[131,135,137,143,145,151],{"type":47,"tag":62,"props":132,"children":133},{},[134],{"type":53,"value":21},{"type":53,"value":136}," — ",{"type":47,"tag":120,"props":138,"children":140},{"className":139},[],[141],{"type":53,"value":142},"docker --version",{"type":53,"value":144}," must return ≥ 20.10. Install: ",{"type":47,"tag":88,"props":146,"children":149},{"href":147,"rel":148},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F",[92],[150],{"type":53,"value":147},{"type":53,"value":152},".",{"type":47,"tag":109,"props":154,"children":155},{},[156,161,163,169,171,177],{"type":47,"tag":62,"props":157,"children":158},{},[159],{"type":53,"value":160},"NGC API key",{"type":53,"value":162}," for ",{"type":47,"tag":120,"props":164,"children":166},{"className":165},[],[167],{"type":53,"value":168},"nvcr.io\u002F*",{"type":53,"value":170}," pulls. Get from ",{"type":47,"tag":88,"props":172,"children":175},{"href":173,"rel":174},"https:\u002F\u002Fngc.nvidia.com\u002F",[92],[176],{"type":53,"value":173},{"type":53,"value":152},{"type":47,"tag":179,"props":180,"children":185},"pre",{"className":181,"code":182,"language":183,"meta":184,"style":184},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","TAO_SKILL_BANK_ROOT=\"${TAO_SKILL_BANK_ROOT:-$PWD}\"\nSETUP_SCRIPT=\"${TAO_SKILL_BANK_ROOT}\u002Fplatform\u002Ftao-setup-nvidia-gpu-host\u002Fscripts\u002Fsetup-nvidia-gpu-host.sh\"\n\nbash \"$SETUP_SCRIPT\" --backend docker --check-only || {\n  echo \"MISSING: TAO GPU host runtime is not ready.\"\n  echo \"After user approval, run (append --yes for non-interactive agent runs):\"\n  echo \"  bash \\\"$SETUP_SCRIPT\\\" --backend docker --install\"\n  exit 1\n}\n\ndocker --version\ndocker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi\n[ -n \"$NGC_KEY\" ] || echo \"NGC_KEY unset — cannot pull nvcr.io images\"\n","bash","",[186],{"type":47,"tag":120,"props":187,"children":188},{"__ignoreMap":184},[189,231,268,278,327,350,371,402,417,426,434,447,490],{"type":47,"tag":190,"props":191,"children":194},"span",{"class":192,"line":193},"line",1,[195,201,207,212,216,221,226],{"type":47,"tag":190,"props":196,"children":198},{"style":197},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[199],{"type":53,"value":200},"TAO_SKILL_BANK_ROOT",{"type":47,"tag":190,"props":202,"children":204},{"style":203},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[205],{"type":53,"value":206},"=",{"type":47,"tag":190,"props":208,"children":209},{"style":203},[210],{"type":53,"value":211},"\"${",{"type":47,"tag":190,"props":213,"children":214},{"style":197},[215],{"type":53,"value":200},{"type":47,"tag":190,"props":217,"children":218},{"style":203},[219],{"type":53,"value":220},":-",{"type":47,"tag":190,"props":222,"children":223},{"style":197},[224],{"type":53,"value":225},"$PWD",{"type":47,"tag":190,"props":227,"children":228},{"style":203},[229],{"type":53,"value":230},"}\"\n",{"type":47,"tag":190,"props":232,"children":234},{"class":192,"line":233},2,[235,240,244,248,252,257,263],{"type":47,"tag":190,"props":236,"children":237},{"style":197},[238],{"type":53,"value":239},"SETUP_SCRIPT",{"type":47,"tag":190,"props":241,"children":242},{"style":203},[243],{"type":53,"value":206},{"type":47,"tag":190,"props":245,"children":246},{"style":203},[247],{"type":53,"value":211},{"type":47,"tag":190,"props":249,"children":250},{"style":197},[251],{"type":53,"value":200},{"type":47,"tag":190,"props":253,"children":254},{"style":203},[255],{"type":53,"value":256},"}",{"type":47,"tag":190,"props":258,"children":260},{"style":259},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[261],{"type":53,"value":262},"\u002Fplatform\u002Ftao-setup-nvidia-gpu-host\u002Fscripts\u002Fsetup-nvidia-gpu-host.sh",{"type":47,"tag":190,"props":264,"children":265},{"style":203},[266],{"type":53,"value":267},"\"\n",{"type":47,"tag":190,"props":269,"children":271},{"class":192,"line":270},3,[272],{"type":47,"tag":190,"props":273,"children":275},{"emptyLinePlaceholder":274},true,[276],{"type":53,"value":277},"\n",{"type":47,"tag":190,"props":279,"children":281},{"class":192,"line":280},4,[282,287,292,297,302,307,312,317,322],{"type":47,"tag":190,"props":283,"children":285},{"style":284},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[286],{"type":53,"value":183},{"type":47,"tag":190,"props":288,"children":289},{"style":203},[290],{"type":53,"value":291}," \"",{"type":47,"tag":190,"props":293,"children":294},{"style":197},[295],{"type":53,"value":296},"$SETUP_SCRIPT",{"type":47,"tag":190,"props":298,"children":299},{"style":203},[300],{"type":53,"value":301},"\"",{"type":47,"tag":190,"props":303,"children":304},{"style":259},[305],{"type":53,"value":306}," --backend",{"type":47,"tag":190,"props":308,"children":309},{"style":259},[310],{"type":53,"value":311}," docker",{"type":47,"tag":190,"props":313,"children":314},{"style":259},[315],{"type":53,"value":316}," --check-only",{"type":47,"tag":190,"props":318,"children":319},{"style":203},[320],{"type":53,"value":321}," ||",{"type":47,"tag":190,"props":323,"children":324},{"style":203},[325],{"type":53,"value":326}," {\n",{"type":47,"tag":190,"props":328,"children":330},{"class":192,"line":329},5,[331,337,341,346],{"type":47,"tag":190,"props":332,"children":334},{"style":333},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[335],{"type":53,"value":336},"  echo",{"type":47,"tag":190,"props":338,"children":339},{"style":203},[340],{"type":53,"value":291},{"type":47,"tag":190,"props":342,"children":343},{"style":259},[344],{"type":53,"value":345},"MISSING: TAO GPU host runtime is not ready.",{"type":47,"tag":190,"props":347,"children":348},{"style":203},[349],{"type":53,"value":267},{"type":47,"tag":190,"props":351,"children":353},{"class":192,"line":352},6,[354,358,362,367],{"type":47,"tag":190,"props":355,"children":356},{"style":333},[357],{"type":53,"value":336},{"type":47,"tag":190,"props":359,"children":360},{"style":203},[361],{"type":53,"value":291},{"type":47,"tag":190,"props":363,"children":364},{"style":259},[365],{"type":53,"value":366},"After user approval, run (append --yes for non-interactive agent runs):",{"type":47,"tag":190,"props":368,"children":369},{"style":203},[370],{"type":53,"value":267},{"type":47,"tag":190,"props":372,"children":374},{"class":192,"line":373},7,[375,379,383,388,393,398],{"type":47,"tag":190,"props":376,"children":377},{"style":333},[378],{"type":53,"value":336},{"type":47,"tag":190,"props":380,"children":381},{"style":203},[382],{"type":53,"value":291},{"type":47,"tag":190,"props":384,"children":385},{"style":259},[386],{"type":53,"value":387},"  bash ",{"type":47,"tag":190,"props":389,"children":390},{"style":197},[391],{"type":53,"value":392},"\\\"$SETUP_SCRIPT\\\"",{"type":47,"tag":190,"props":394,"children":395},{"style":259},[396],{"type":53,"value":397}," --backend docker --install",{"type":47,"tag":190,"props":399,"children":400},{"style":203},[401],{"type":53,"value":267},{"type":47,"tag":190,"props":403,"children":405},{"class":192,"line":404},8,[406,411],{"type":47,"tag":190,"props":407,"children":408},{"style":333},[409],{"type":53,"value":410},"  exit",{"type":47,"tag":190,"props":412,"children":414},{"style":413},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[415],{"type":53,"value":416}," 1\n",{"type":47,"tag":190,"props":418,"children":420},{"class":192,"line":419},9,[421],{"type":47,"tag":190,"props":422,"children":423},{"style":203},[424],{"type":53,"value":425},"}\n",{"type":47,"tag":190,"props":427,"children":429},{"class":192,"line":428},10,[430],{"type":47,"tag":190,"props":431,"children":432},{"emptyLinePlaceholder":274},[433],{"type":53,"value":277},{"type":47,"tag":190,"props":435,"children":437},{"class":192,"line":436},11,[438,442],{"type":47,"tag":190,"props":439,"children":440},{"style":284},[441],{"type":53,"value":22},{"type":47,"tag":190,"props":443,"children":444},{"style":259},[445],{"type":53,"value":446}," --version\n",{"type":47,"tag":190,"props":448,"children":450},{"class":192,"line":449},12,[451,455,460,465,470,475,480,485],{"type":47,"tag":190,"props":452,"children":453},{"style":284},[454],{"type":53,"value":22},{"type":47,"tag":190,"props":456,"children":457},{"style":259},[458],{"type":53,"value":459}," run",{"type":47,"tag":190,"props":461,"children":462},{"style":259},[463],{"type":53,"value":464}," --rm",{"type":47,"tag":190,"props":466,"children":467},{"style":259},[468],{"type":53,"value":469}," --runtime=nvidia",{"type":47,"tag":190,"props":471,"children":472},{"style":259},[473],{"type":53,"value":474}," --gpus",{"type":47,"tag":190,"props":476,"children":477},{"style":259},[478],{"type":53,"value":479}," all",{"type":47,"tag":190,"props":481,"children":482},{"style":259},[483],{"type":53,"value":484}," ubuntu",{"type":47,"tag":190,"props":486,"children":487},{"style":259},[488],{"type":53,"value":489}," nvidia-smi\n",{"type":47,"tag":190,"props":491,"children":493},{"class":192,"line":492},13,[494,499,504,508,513,517,522,526,531,535,540],{"type":47,"tag":190,"props":495,"children":496},{"style":203},[497],{"type":53,"value":498},"[",{"type":47,"tag":190,"props":500,"children":501},{"style":203},[502],{"type":53,"value":503}," -n",{"type":47,"tag":190,"props":505,"children":506},{"style":203},[507],{"type":53,"value":291},{"type":47,"tag":190,"props":509,"children":510},{"style":197},[511],{"type":53,"value":512},"$NGC_KEY",{"type":47,"tag":190,"props":514,"children":515},{"style":203},[516],{"type":53,"value":301},{"type":47,"tag":190,"props":518,"children":519},{"style":203},[520],{"type":53,"value":521}," ]",{"type":47,"tag":190,"props":523,"children":524},{"style":203},[525],{"type":53,"value":321},{"type":47,"tag":190,"props":527,"children":528},{"style":333},[529],{"type":53,"value":530}," echo",{"type":47,"tag":190,"props":532,"children":533},{"style":203},[534],{"type":53,"value":291},{"type":47,"tag":190,"props":536,"children":537},{"style":259},[538],{"type":53,"value":539},"NGC_KEY unset — cannot pull nvcr.io images",{"type":47,"tag":190,"props":541,"children":542},{"style":203},[543],{"type":53,"value":267},{"type":47,"tag":98,"props":545,"children":547},{"id":546},"ngc-authentication",[548],{"type":53,"value":549},"NGC authentication",{"type":47,"tag":179,"props":551,"children":553},{"className":181,"code":552,"language":183,"meta":184,"style":184},"echo \"$NGC_KEY\" | docker login nvcr.io -u '$oauthtoken' --password-stdin\n",[554],{"type":47,"tag":120,"props":555,"children":556},{"__ignoreMap":184},[557],{"type":47,"tag":190,"props":558,"children":559},{"class":192,"line":193},[560,565,569,573,577,582,586,591,596,601,606,611,616],{"type":47,"tag":190,"props":561,"children":562},{"style":333},[563],{"type":53,"value":564},"echo",{"type":47,"tag":190,"props":566,"children":567},{"style":203},[568],{"type":53,"value":291},{"type":47,"tag":190,"props":570,"children":571},{"style":197},[572],{"type":53,"value":512},{"type":47,"tag":190,"props":574,"children":575},{"style":203},[576],{"type":53,"value":301},{"type":47,"tag":190,"props":578,"children":579},{"style":203},[580],{"type":53,"value":581}," |",{"type":47,"tag":190,"props":583,"children":584},{"style":284},[585],{"type":53,"value":311},{"type":47,"tag":190,"props":587,"children":588},{"style":259},[589],{"type":53,"value":590}," login",{"type":47,"tag":190,"props":592,"children":593},{"style":259},[594],{"type":53,"value":595}," nvcr.io",{"type":47,"tag":190,"props":597,"children":598},{"style":259},[599],{"type":53,"value":600}," -u",{"type":47,"tag":190,"props":602,"children":603},{"style":203},[604],{"type":53,"value":605}," '",{"type":47,"tag":190,"props":607,"children":608},{"style":259},[609],{"type":53,"value":610},"$oauthtoken",{"type":47,"tag":190,"props":612,"children":613},{"style":203},[614],{"type":53,"value":615},"'",{"type":47,"tag":190,"props":617,"children":618},{"style":259},[619],{"type":53,"value":620}," --password-stdin\n",{"type":47,"tag":56,"props":622,"children":623},{},[624,626,632,634,640],{"type":53,"value":625},"Persists in ",{"type":47,"tag":120,"props":627,"children":629},{"className":628},[],[630],{"type":53,"value":631},"~\u002F.docker\u002Fconfig.json",{"type":53,"value":633}," across reboots. Re-run on ",{"type":47,"tag":120,"props":635,"children":637},{"className":636},[],[638],{"type":53,"value":639},"unauthorized",{"type":53,"value":641}," errors.",{"type":47,"tag":98,"props":643,"children":645},{"id":644},"docker-run-canonical-flags",[646,652],{"type":47,"tag":120,"props":647,"children":649},{"className":648},[],[650],{"type":53,"value":651},"docker run",{"type":53,"value":653}," — canonical flags",{"type":47,"tag":179,"props":655,"children":657},{"className":181,"code":656,"language":183,"meta":184,"style":184},"docker run \\\n  --gpus all \\                        # all GPUs (requires nvidia-container-toolkit)\n  --rm \\                              # delete container after exit (image is preserved)\n  --shm-size=8g \\                     # shared mem for torchrun \u002F DataLoader\n  -v \u002Fhost\u002Fdata:\u002Fdata \\               # bind-mount input\n  -v \u002Fhost\u002Fresults:\u002Fresults \\         # bind-mount output\n  -e HF_TOKEN -e NGC_KEY \\            # env-var passthrough (values from parent shell)\n  \u003Cimage> \\\n  \u003Ccommand>\n",[658],{"type":47,"tag":120,"props":659,"children":660},{"__ignoreMap":184},[661,677,700,718,745,768,790,823,841],{"type":47,"tag":190,"props":662,"children":663},{"class":192,"line":193},[664,668,672],{"type":47,"tag":190,"props":665,"children":666},{"style":284},[667],{"type":53,"value":22},{"type":47,"tag":190,"props":669,"children":670},{"style":259},[671],{"type":53,"value":459},{"type":47,"tag":190,"props":673,"children":674},{"style":197},[675],{"type":53,"value":676}," \\\n",{"type":47,"tag":190,"props":678,"children":679},{"class":192,"line":233},[680,685,689,694],{"type":47,"tag":190,"props":681,"children":682},{"style":259},[683],{"type":53,"value":684},"  --gpus",{"type":47,"tag":190,"props":686,"children":687},{"style":259},[688],{"type":53,"value":479},{"type":47,"tag":190,"props":690,"children":691},{"style":197},[692],{"type":53,"value":693}," \\                        ",{"type":47,"tag":190,"props":695,"children":697},{"style":696},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[698],{"type":53,"value":699},"# all GPUs (requires nvidia-container-toolkit)\n",{"type":47,"tag":190,"props":701,"children":702},{"class":192,"line":270},[703,708,713],{"type":47,"tag":190,"props":704,"children":705},{"style":284},[706],{"type":53,"value":707},"  --rm",{"type":47,"tag":190,"props":709,"children":710},{"style":197},[711],{"type":53,"value":712}," \\                              ",{"type":47,"tag":190,"props":714,"children":715},{"style":696},[716],{"type":53,"value":717},"# delete container after exit (image is preserved)\n",{"type":47,"tag":190,"props":719,"children":720},{"class":192,"line":280},[721,726,730,735,740],{"type":47,"tag":190,"props":722,"children":723},{"style":197},[724],{"type":53,"value":725},"  --shm-size",{"type":47,"tag":190,"props":727,"children":728},{"style":203},[729],{"type":53,"value":206},{"type":47,"tag":190,"props":731,"children":732},{"style":259},[733],{"type":53,"value":734},"8g",{"type":47,"tag":190,"props":736,"children":737},{"style":197},[738],{"type":53,"value":739}," \\                     ",{"type":47,"tag":190,"props":741,"children":742},{"style":696},[743],{"type":53,"value":744},"# shared mem for torchrun \u002F DataLoader\n",{"type":47,"tag":190,"props":746,"children":747},{"class":192,"line":329},[748,753,758,763],{"type":47,"tag":190,"props":749,"children":750},{"style":284},[751],{"type":53,"value":752},"  -v",{"type":47,"tag":190,"props":754,"children":755},{"style":259},[756],{"type":53,"value":757}," \u002Fhost\u002Fdata:\u002Fdata",{"type":47,"tag":190,"props":759,"children":760},{"style":197},[761],{"type":53,"value":762}," \\               ",{"type":47,"tag":190,"props":764,"children":765},{"style":696},[766],{"type":53,"value":767},"# bind-mount input\n",{"type":47,"tag":190,"props":769,"children":770},{"class":192,"line":352},[771,775,780,785],{"type":47,"tag":190,"props":772,"children":773},{"style":284},[774],{"type":53,"value":752},{"type":47,"tag":190,"props":776,"children":777},{"style":259},[778],{"type":53,"value":779}," \u002Fhost\u002Fresults:\u002Fresults",{"type":47,"tag":190,"props":781,"children":782},{"style":197},[783],{"type":53,"value":784}," \\         ",{"type":47,"tag":190,"props":786,"children":787},{"style":696},[788],{"type":53,"value":789},"# bind-mount output\n",{"type":47,"tag":190,"props":791,"children":792},{"class":192,"line":373},[793,798,803,808,813,818],{"type":47,"tag":190,"props":794,"children":795},{"style":284},[796],{"type":53,"value":797},"  -e",{"type":47,"tag":190,"props":799,"children":800},{"style":259},[801],{"type":53,"value":802}," HF_TOKEN",{"type":47,"tag":190,"props":804,"children":805},{"style":259},[806],{"type":53,"value":807}," -e",{"type":47,"tag":190,"props":809,"children":810},{"style":259},[811],{"type":53,"value":812}," NGC_KEY",{"type":47,"tag":190,"props":814,"children":815},{"style":197},[816],{"type":53,"value":817}," \\            ",{"type":47,"tag":190,"props":819,"children":820},{"style":696},[821],{"type":53,"value":822},"# env-var passthrough (values from parent shell)\n",{"type":47,"tag":190,"props":824,"children":825},{"class":192,"line":404},[826,831,836],{"type":47,"tag":190,"props":827,"children":828},{"style":203},[829],{"type":53,"value":830},"  \u003C",{"type":47,"tag":190,"props":832,"children":833},{"style":284},[834],{"type":53,"value":835},"image",{"type":47,"tag":190,"props":837,"children":838},{"style":197},[839],{"type":53,"value":840},"> \\\n",{"type":47,"tag":190,"props":842,"children":843},{"class":192,"line":419},[844,848,853,858],{"type":47,"tag":190,"props":845,"children":846},{"style":203},[847],{"type":53,"value":830},{"type":47,"tag":190,"props":849,"children":850},{"style":259},[851],{"type":53,"value":852},"comman",{"type":47,"tag":190,"props":854,"children":855},{"style":197},[856],{"type":53,"value":857},"d",{"type":47,"tag":190,"props":859,"children":860},{"style":203},[861],{"type":53,"value":862},">\n",{"type":47,"tag":56,"props":864,"children":865},{},[866],{"type":53,"value":867},"Notes:",{"type":47,"tag":869,"props":870,"children":871},"ul",{},[872,890,909,943,954],{"type":47,"tag":109,"props":873,"children":874},{},[875,881,883,889],{"type":47,"tag":120,"props":876,"children":878},{"className":877},[],[879],{"type":53,"value":880},"--gpus '\"device=0,1\"'",{"type":53,"value":882}," — specific GPUs (double-quote-escaped). Without nvidia-container-toolkit: ",{"type":47,"tag":120,"props":884,"children":886},{"className":885},[],[887],{"type":53,"value":888},"could not select device driver \"\" with capabilities: [[gpu]]",{"type":53,"value":152},{"type":47,"tag":109,"props":891,"children":892},{},[893,899,901,907],{"type":47,"tag":120,"props":894,"children":896},{"className":895},[],[897],{"type":53,"value":898},"--rm",{"type":53,"value":900}," — clean up the container at exit; omit when you want ",{"type":47,"tag":120,"props":902,"children":904},{"className":903},[],[905],{"type":53,"value":906},"docker logs",{"type":53,"value":908}," after exit.",{"type":47,"tag":109,"props":910,"children":911},{},[912,918,920,926,928,934,936,942],{"type":47,"tag":120,"props":913,"children":915},{"className":914},[],[916],{"type":53,"value":917},"--shm-size=8g",{"type":53,"value":919}," — torchrun + PyTorch DataLoaders exhaust the default 64 MB ",{"type":47,"tag":120,"props":921,"children":923},{"className":922},[],[924],{"type":53,"value":925},"\u002Fdev\u002Fshm",{"type":53,"value":927}," otherwise; size it for multi-GPU training and raise (e.g. ",{"type":47,"tag":120,"props":929,"children":931},{"className":930},[],[932],{"type":53,"value":933},"16g",{"type":53,"value":935},") if you still hit ",{"type":47,"tag":120,"props":937,"children":939},{"className":938},[],[940],{"type":53,"value":941},"Bus error",{"type":53,"value":152},{"type":47,"tag":109,"props":944,"children":945},{},[946,952],{"type":47,"tag":120,"props":947,"children":949},{"className":948},[],[950],{"type":53,"value":951},"-v host:container",{"type":53,"value":953}," — bind mount; the command references container paths only.",{"type":47,"tag":109,"props":955,"children":956},{},[957,963],{"type":47,"tag":120,"props":958,"children":960},{"className":959},[],[961],{"type":53,"value":962},"-e VAR",{"type":53,"value":964}," — passthrough from parent shell (no value needed if already set). Use this form for secrets.",{"type":47,"tag":98,"props":966,"children":968},{"id":967},"container-name-collision",[969],{"type":53,"value":970},"Container name collision",{"type":47,"tag":56,"props":972,"children":973},{},[974,980,982,988],{"type":47,"tag":120,"props":975,"children":977},{"className":976},[],[978],{"type":53,"value":979},"docker run --name X",{"type":53,"value":981}," fails if a container named ",{"type":47,"tag":120,"props":983,"children":985},{"className":984},[],[986],{"type":53,"value":987},"X",{"type":53,"value":989}," already exists. Defensive pattern before reusing a name:",{"type":47,"tag":179,"props":991,"children":993},{"className":181,"code":992,"language":183,"meta":184,"style":184},"docker stop my-worker 2>\u002Fdev\u002Fnull; docker rm my-worker 2>\u002Fdev\u002Fnull\ndocker run --name my-worker ...\n",[994],{"type":47,"tag":120,"props":995,"children":996},{"__ignoreMap":184},[997,1051],{"type":47,"tag":190,"props":998,"children":999},{"class":192,"line":193},[1000,1004,1009,1014,1019,1024,1029,1033,1038,1042,1046],{"type":47,"tag":190,"props":1001,"children":1002},{"style":284},[1003],{"type":53,"value":22},{"type":47,"tag":190,"props":1005,"children":1006},{"style":259},[1007],{"type":53,"value":1008}," stop",{"type":47,"tag":190,"props":1010,"children":1011},{"style":259},[1012],{"type":53,"value":1013}," my-worker",{"type":47,"tag":190,"props":1015,"children":1016},{"style":203},[1017],{"type":53,"value":1018}," 2>",{"type":47,"tag":190,"props":1020,"children":1021},{"style":259},[1022],{"type":53,"value":1023},"\u002Fdev\u002Fnull",{"type":47,"tag":190,"props":1025,"children":1026},{"style":203},[1027],{"type":53,"value":1028},";",{"type":47,"tag":190,"props":1030,"children":1031},{"style":284},[1032],{"type":53,"value":311},{"type":47,"tag":190,"props":1034,"children":1035},{"style":259},[1036],{"type":53,"value":1037}," rm",{"type":47,"tag":190,"props":1039,"children":1040},{"style":259},[1041],{"type":53,"value":1013},{"type":47,"tag":190,"props":1043,"children":1044},{"style":203},[1045],{"type":53,"value":1018},{"type":47,"tag":190,"props":1047,"children":1048},{"style":259},[1049],{"type":53,"value":1050},"\u002Fdev\u002Fnull\n",{"type":47,"tag":190,"props":1052,"children":1053},{"class":192,"line":233},[1054,1058,1062,1067,1071],{"type":47,"tag":190,"props":1055,"children":1056},{"style":284},[1057],{"type":53,"value":22},{"type":47,"tag":190,"props":1059,"children":1060},{"style":259},[1061],{"type":53,"value":459},{"type":47,"tag":190,"props":1063,"children":1064},{"style":259},[1065],{"type":53,"value":1066}," --name",{"type":47,"tag":190,"props":1068,"children":1069},{"style":259},[1070],{"type":53,"value":1013},{"type":47,"tag":190,"props":1072,"children":1073},{"style":259},[1074],{"type":53,"value":1075}," ...\n",{"type":47,"tag":98,"props":1077,"children":1079},{"id":1078},"detached-exec-pattern",[1080],{"type":53,"value":1081},"Detached + exec pattern",{"type":47,"tag":56,"props":1083,"children":1084},{},[1085],{"type":53,"value":1086},"For multi-step workflows on the same container (download → run → post-process), avoid restart cost:",{"type":47,"tag":179,"props":1088,"children":1090},{"className":181,"code":1089,"language":183,"meta":184,"style":184},"docker run -d --name \u003Cworker> \\\n  --gpus all --shm-size=8g \\\n  -v \u003Cmounts...> -e \u003Cenvs...> \\\n  --entrypoint sh \\\n  \u003Cimage> -c \"tail -f \u002Fdev\u002Fnull\"\n\ndocker exec \u003Cworker> \u003Cstep_1>\ndocker exec \u003Cworker> \u003Cstep_2>\n\ndocker stop \u003Cworker> && docker rm \u003Cworker>\n",[1091],{"type":47,"tag":120,"props":1092,"children":1093},{"__ignoreMap":184},[1094,1138,1158,1207,1224,1263,1270,1312,1352,1359],{"type":47,"tag":190,"props":1095,"children":1096},{"class":192,"line":193},[1097,1101,1105,1110,1114,1119,1124,1129,1134],{"type":47,"tag":190,"props":1098,"children":1099},{"style":284},[1100],{"type":53,"value":22},{"type":47,"tag":190,"props":1102,"children":1103},{"style":259},[1104],{"type":53,"value":459},{"type":47,"tag":190,"props":1106,"children":1107},{"style":259},[1108],{"type":53,"value":1109}," -d",{"type":47,"tag":190,"props":1111,"children":1112},{"style":259},[1113],{"type":53,"value":1066},{"type":47,"tag":190,"props":1115,"children":1116},{"style":203},[1117],{"type":53,"value":1118}," \u003C",{"type":47,"tag":190,"props":1120,"children":1121},{"style":259},[1122],{"type":53,"value":1123},"worke",{"type":47,"tag":190,"props":1125,"children":1126},{"style":197},[1127],{"type":53,"value":1128},"r",{"type":47,"tag":190,"props":1130,"children":1131},{"style":203},[1132],{"type":53,"value":1133},">",{"type":47,"tag":190,"props":1135,"children":1136},{"style":197},[1137],{"type":53,"value":676},{"type":47,"tag":190,"props":1139,"children":1140},{"class":192,"line":233},[1141,1145,1149,1154],{"type":47,"tag":190,"props":1142,"children":1143},{"style":259},[1144],{"type":53,"value":684},{"type":47,"tag":190,"props":1146,"children":1147},{"style":259},[1148],{"type":53,"value":479},{"type":47,"tag":190,"props":1150,"children":1151},{"style":259},[1152],{"type":53,"value":1153}," --shm-size=8g",{"type":47,"tag":190,"props":1155,"children":1156},{"style":197},[1157],{"type":53,"value":676},{"type":47,"tag":190,"props":1159,"children":1160},{"class":192,"line":270},[1161,1165,1169,1174,1178,1182,1186,1190,1195,1199,1203],{"type":47,"tag":190,"props":1162,"children":1163},{"style":259},[1164],{"type":53,"value":752},{"type":47,"tag":190,"props":1166,"children":1167},{"style":203},[1168],{"type":53,"value":1118},{"type":47,"tag":190,"props":1170,"children":1171},{"style":259},[1172],{"type":53,"value":1173},"mounts..",{"type":47,"tag":190,"props":1175,"children":1176},{"style":197},[1177],{"type":53,"value":152},{"type":47,"tag":190,"props":1179,"children":1180},{"style":203},[1181],{"type":53,"value":1133},{"type":47,"tag":190,"props":1183,"children":1184},{"style":259},[1185],{"type":53,"value":807},{"type":47,"tag":190,"props":1187,"children":1188},{"style":203},[1189],{"type":53,"value":1118},{"type":47,"tag":190,"props":1191,"children":1192},{"style":259},[1193],{"type":53,"value":1194},"envs..",{"type":47,"tag":190,"props":1196,"children":1197},{"style":197},[1198],{"type":53,"value":152},{"type":47,"tag":190,"props":1200,"children":1201},{"style":203},[1202],{"type":53,"value":1133},{"type":47,"tag":190,"props":1204,"children":1205},{"style":197},[1206],{"type":53,"value":676},{"type":47,"tag":190,"props":1208,"children":1209},{"class":192,"line":280},[1210,1215,1220],{"type":47,"tag":190,"props":1211,"children":1212},{"style":259},[1213],{"type":53,"value":1214},"  --entrypoint",{"type":47,"tag":190,"props":1216,"children":1217},{"style":259},[1218],{"type":53,"value":1219}," sh",{"type":47,"tag":190,"props":1221,"children":1222},{"style":197},[1223],{"type":53,"value":676},{"type":47,"tag":190,"props":1225,"children":1226},{"class":192,"line":329},[1227,1231,1236,1241,1245,1250,1254,1259],{"type":47,"tag":190,"props":1228,"children":1229},{"style":203},[1230],{"type":53,"value":830},{"type":47,"tag":190,"props":1232,"children":1233},{"style":259},[1234],{"type":53,"value":1235},"imag",{"type":47,"tag":190,"props":1237,"children":1238},{"style":197},[1239],{"type":53,"value":1240},"e",{"type":47,"tag":190,"props":1242,"children":1243},{"style":203},[1244],{"type":53,"value":1133},{"type":47,"tag":190,"props":1246,"children":1247},{"style":259},[1248],{"type":53,"value":1249}," -c",{"type":47,"tag":190,"props":1251,"children":1252},{"style":203},[1253],{"type":53,"value":291},{"type":47,"tag":190,"props":1255,"children":1256},{"style":259},[1257],{"type":53,"value":1258},"tail -f \u002Fdev\u002Fnull",{"type":47,"tag":190,"props":1260,"children":1261},{"style":203},[1262],{"type":53,"value":267},{"type":47,"tag":190,"props":1264,"children":1265},{"class":192,"line":352},[1266],{"type":47,"tag":190,"props":1267,"children":1268},{"emptyLinePlaceholder":274},[1269],{"type":53,"value":277},{"type":47,"tag":190,"props":1271,"children":1272},{"class":192,"line":373},[1273,1277,1282,1286,1290,1294,1298,1302,1307],{"type":47,"tag":190,"props":1274,"children":1275},{"style":284},[1276],{"type":53,"value":22},{"type":47,"tag":190,"props":1278,"children":1279},{"style":259},[1280],{"type":53,"value":1281}," exec",{"type":47,"tag":190,"props":1283,"children":1284},{"style":203},[1285],{"type":53,"value":1118},{"type":47,"tag":190,"props":1287,"children":1288},{"style":259},[1289],{"type":53,"value":1123},{"type":47,"tag":190,"props":1291,"children":1292},{"style":197},[1293],{"type":53,"value":1128},{"type":47,"tag":190,"props":1295,"children":1296},{"style":203},[1297],{"type":53,"value":1133},{"type":47,"tag":190,"props":1299,"children":1300},{"style":203},[1301],{"type":53,"value":1118},{"type":47,"tag":190,"props":1303,"children":1304},{"style":259},[1305],{"type":53,"value":1306},"step_",{"type":47,"tag":190,"props":1308,"children":1309},{"style":203},[1310],{"type":53,"value":1311},"1>\n",{"type":47,"tag":190,"props":1313,"children":1314},{"class":192,"line":404},[1315,1319,1323,1327,1331,1335,1339,1343,1347],{"type":47,"tag":190,"props":1316,"children":1317},{"style":284},[1318],{"type":53,"value":22},{"type":47,"tag":190,"props":1320,"children":1321},{"style":259},[1322],{"type":53,"value":1281},{"type":47,"tag":190,"props":1324,"children":1325},{"style":203},[1326],{"type":53,"value":1118},{"type":47,"tag":190,"props":1328,"children":1329},{"style":259},[1330],{"type":53,"value":1123},{"type":47,"tag":190,"props":1332,"children":1333},{"style":197},[1334],{"type":53,"value":1128},{"type":47,"tag":190,"props":1336,"children":1337},{"style":203},[1338],{"type":53,"value":1133},{"type":47,"tag":190,"props":1340,"children":1341},{"style":203},[1342],{"type":53,"value":1118},{"type":47,"tag":190,"props":1344,"children":1345},{"style":259},[1346],{"type":53,"value":1306},{"type":47,"tag":190,"props":1348,"children":1349},{"style":203},[1350],{"type":53,"value":1351},"2>\n",{"type":47,"tag":190,"props":1353,"children":1354},{"class":192,"line":419},[1355],{"type":47,"tag":190,"props":1356,"children":1357},{"emptyLinePlaceholder":274},[1358],{"type":53,"value":277},{"type":47,"tag":190,"props":1360,"children":1361},{"class":192,"line":428},[1362,1366,1370,1374,1378,1382,1386,1391,1395,1399,1403,1407,1411],{"type":47,"tag":190,"props":1363,"children":1364},{"style":284},[1365],{"type":53,"value":22},{"type":47,"tag":190,"props":1367,"children":1368},{"style":259},[1369],{"type":53,"value":1008},{"type":47,"tag":190,"props":1371,"children":1372},{"style":203},[1373],{"type":53,"value":1118},{"type":47,"tag":190,"props":1375,"children":1376},{"style":259},[1377],{"type":53,"value":1123},{"type":47,"tag":190,"props":1379,"children":1380},{"style":197},[1381],{"type":53,"value":1128},{"type":47,"tag":190,"props":1383,"children":1384},{"style":203},[1385],{"type":53,"value":1133},{"type":47,"tag":190,"props":1387,"children":1388},{"style":203},[1389],{"type":53,"value":1390}," &&",{"type":47,"tag":190,"props":1392,"children":1393},{"style":284},[1394],{"type":53,"value":311},{"type":47,"tag":190,"props":1396,"children":1397},{"style":259},[1398],{"type":53,"value":1037},{"type":47,"tag":190,"props":1400,"children":1401},{"style":203},[1402],{"type":53,"value":1118},{"type":47,"tag":190,"props":1404,"children":1405},{"style":259},[1406],{"type":53,"value":1123},{"type":47,"tag":190,"props":1408,"children":1409},{"style":197},[1410],{"type":53,"value":1128},{"type":47,"tag":190,"props":1412,"children":1413},{"style":203},[1414],{"type":53,"value":862},{"type":47,"tag":98,"props":1416,"children":1418},{"id":1417},"pull-if-missing-idiom",[1419],{"type":53,"value":1420},"Pull-if-missing idiom",{"type":47,"tag":179,"props":1422,"children":1424},{"className":181,"code":1423,"language":183,"meta":184,"style":184},"docker image inspect \u003Cimage> >\u002Fdev\u002Fnull 2>&1 || docker pull \u003Cimage>\n",[1425],{"type":47,"tag":120,"props":1426,"children":1427},{"__ignoreMap":184},[1428],{"type":47,"tag":190,"props":1429,"children":1430},{"class":192,"line":193},[1431,1435,1440,1445,1449,1453,1457,1461,1466,1470,1475,1479,1483,1488,1492,1496,1500],{"type":47,"tag":190,"props":1432,"children":1433},{"style":284},[1434],{"type":53,"value":22},{"type":47,"tag":190,"props":1436,"children":1437},{"style":259},[1438],{"type":53,"value":1439}," image",{"type":47,"tag":190,"props":1441,"children":1442},{"style":259},[1443],{"type":53,"value":1444}," inspect",{"type":47,"tag":190,"props":1446,"children":1447},{"style":203},[1448],{"type":53,"value":1118},{"type":47,"tag":190,"props":1450,"children":1451},{"style":259},[1452],{"type":53,"value":1235},{"type":47,"tag":190,"props":1454,"children":1455},{"style":197},[1456],{"type":53,"value":1240},{"type":47,"tag":190,"props":1458,"children":1459},{"style":203},[1460],{"type":53,"value":1133},{"type":47,"tag":190,"props":1462,"children":1463},{"style":203},[1464],{"type":53,"value":1465}," >",{"type":47,"tag":190,"props":1467,"children":1468},{"style":259},[1469],{"type":53,"value":1023},{"type":47,"tag":190,"props":1471,"children":1472},{"style":203},[1473],{"type":53,"value":1474}," 2>&1",{"type":47,"tag":190,"props":1476,"children":1477},{"style":203},[1478],{"type":53,"value":321},{"type":47,"tag":190,"props":1480,"children":1481},{"style":284},[1482],{"type":53,"value":311},{"type":47,"tag":190,"props":1484,"children":1485},{"style":259},[1486],{"type":53,"value":1487}," pull",{"type":47,"tag":190,"props":1489,"children":1490},{"style":203},[1491],{"type":53,"value":1118},{"type":47,"tag":190,"props":1493,"children":1494},{"style":259},[1495],{"type":53,"value":1235},{"type":47,"tag":190,"props":1497,"children":1498},{"style":197},[1499],{"type":53,"value":1240},{"type":47,"tag":190,"props":1501,"children":1502},{"style":203},[1503],{"type":53,"value":862},{"type":47,"tag":98,"props":1505,"children":1507},{"id":1506},"labels-for-discovery",[1508],{"type":53,"value":1509},"Labels for discovery",{"type":47,"tag":56,"props":1511,"children":1512},{},[1513],{"type":53,"value":1514},"Tag containers for filtered listing later:",{"type":47,"tag":179,"props":1516,"children":1518},{"className":181,"code":1517,"language":183,"meta":184,"style":184},"docker run --label tao-toolkit ...\ndocker ps --filter 'label=tao-toolkit'\n",[1519],{"type":47,"tag":120,"props":1520,"children":1521},{"__ignoreMap":184},[1522,1547],{"type":47,"tag":190,"props":1523,"children":1524},{"class":192,"line":193},[1525,1529,1533,1538,1543],{"type":47,"tag":190,"props":1526,"children":1527},{"style":284},[1528],{"type":53,"value":22},{"type":47,"tag":190,"props":1530,"children":1531},{"style":259},[1532],{"type":53,"value":459},{"type":47,"tag":190,"props":1534,"children":1535},{"style":259},[1536],{"type":53,"value":1537}," --label",{"type":47,"tag":190,"props":1539,"children":1540},{"style":259},[1541],{"type":53,"value":1542}," tao-toolkit",{"type":47,"tag":190,"props":1544,"children":1545},{"style":259},[1546],{"type":53,"value":1075},{"type":47,"tag":190,"props":1548,"children":1549},{"class":192,"line":233},[1550,1554,1559,1564,1568,1573],{"type":47,"tag":190,"props":1551,"children":1552},{"style":284},[1553],{"type":53,"value":22},{"type":47,"tag":190,"props":1555,"children":1556},{"style":259},[1557],{"type":53,"value":1558}," ps",{"type":47,"tag":190,"props":1560,"children":1561},{"style":259},[1562],{"type":53,"value":1563}," --filter",{"type":47,"tag":190,"props":1565,"children":1566},{"style":203},[1567],{"type":53,"value":605},{"type":47,"tag":190,"props":1569,"children":1570},{"style":259},[1571],{"type":53,"value":1572},"label=tao-toolkit",{"type":47,"tag":190,"props":1574,"children":1575},{"style":203},[1576],{"type":53,"value":1577},"'\n",{"type":47,"tag":98,"props":1579,"children":1581},{"id":1580},"mount-patterns",[1582],{"type":53,"value":1583},"Mount patterns",{"type":47,"tag":56,"props":1585,"children":1586},{},[1587,1589,1595,1597,1603,1604,1610],{"type":53,"value":1588},"The container expects its data at conventional paths defined by the image (often ",{"type":47,"tag":120,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":53,"value":1594},"\u002Fdata",{"type":53,"value":1596},", ",{"type":47,"tag":120,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":53,"value":1602},"\u002Fresults",{"type":53,"value":1596},{"type":47,"tag":120,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":53,"value":1609},"\u002Fworkspace\u002Fcheckpoints",{"type":53,"value":1611},"). The host side is arbitrary. The command inside docker run references container paths only.",{"type":47,"tag":98,"props":1613,"children":1615},{"id":1614},"env-var-conventions",[1616],{"type":53,"value":1617},"Env-var conventions",{"type":47,"tag":56,"props":1619,"children":1620},{},[1621],{"type":53,"value":1622},"Common passthrough vars for TAO-style workloads (the calling skill declares which it needs):",{"type":47,"tag":869,"props":1624,"children":1625},{},[1626,1644,1655,1680],{"type":47,"tag":109,"props":1627,"children":1628},{},[1629,1635,1636,1642],{"type":47,"tag":120,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":53,"value":1634},"NGC_KEY",{"type":53,"value":136},{"type":47,"tag":120,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":53,"value":1641},"nvcr.io",{"type":53,"value":1643}," pulls; some runtimes also read at runtime",{"type":47,"tag":109,"props":1645,"children":1646},{},[1647,1653],{"type":47,"tag":120,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":53,"value":1652},"HF_TOKEN",{"type":53,"value":1654}," — gated HuggingFace model downloads",{"type":47,"tag":109,"props":1656,"children":1657},{},[1658,1664,1665,1671,1672,1678],{"type":47,"tag":120,"props":1659,"children":1661},{"className":1660},[],[1662],{"type":53,"value":1663},"AWS_ACCESS_KEY_ID",{"type":53,"value":1596},{"type":47,"tag":120,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":53,"value":1670},"AWS_SECRET_ACCESS_KEY",{"type":53,"value":1596},{"type":47,"tag":120,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":53,"value":1677},"AWS_ENDPOINT_URL",{"type":53,"value":1679}," — S3 I\u002FO inside the container",{"type":47,"tag":109,"props":1681,"children":1682},{},[1683,1689],{"type":47,"tag":120,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":53,"value":1688},"WANDB_API_KEY",{"type":53,"value":1690}," — optional W&B logging",{"type":47,"tag":56,"props":1692,"children":1693},{},[1694,1696,1701,1703,1709],{"type":53,"value":1695},"Use ",{"type":47,"tag":120,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":53,"value":962},{"type":53,"value":1702}," (no ",{"type":47,"tag":120,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":53,"value":1708},"=value",{"type":53,"value":1710},") when the var is in the parent shell. Avoid placing secrets on the command line.",{"type":47,"tag":56,"props":1712,"children":1713},{},[1714,1716,1722,1724,1730,1732,1738,1740,1746,1748,1753,1755,1761],{"type":53,"value":1715},"Alternative GPU selection: ",{"type":47,"tag":120,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":53,"value":1721},"-e NVIDIA_VISIBLE_DEVICES=0,1",{"type":53,"value":1723}," (or ",{"type":47,"tag":120,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":53,"value":1729},"all",{"type":53,"value":1731},") and ",{"type":47,"tag":120,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":53,"value":1737},"-e NVIDIA_DRIVER_CAPABILITIES=all",{"type":53,"value":1739}," instead of ",{"type":47,"tag":120,"props":1741,"children":1743},{"className":1742},[],[1744],{"type":53,"value":1745},"--gpus",{"type":53,"value":1747},". The ",{"type":47,"tag":120,"props":1749,"children":1751},{"className":1750},[],[1752],{"type":53,"value":1745},{"type":53,"value":1754}," flag is preferred on standard x86 hosts; the env-var form is older and is what ",{"type":47,"tag":120,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":53,"value":1760},"runtime=nvidia",{"type":53,"value":1762}," (Tegra\u002FJetson) requires.",{"type":47,"tag":98,"props":1764,"children":1766},{"id":1765},"container-inspection",[1767],{"type":53,"value":1768},"Container inspection",{"type":47,"tag":179,"props":1770,"children":1772},{"className":181,"code":1771,"language":183,"meta":184,"style":184},"docker ps                                # running containers only\ndocker ps -a                             # all containers, including exited\ndocker ps --filter status=running --format '{{.Names}} {{.Image}}'\ndocker logs \u003Cname_or_id>                 # stdout\u002Fstderr\ndocker logs -f \u003Cname_or_id>              # follow (tail -f equivalent)\ndocker logs --tail 100 \u003Cname_or_id>      # last N lines\ndocker inspect \u003Cname_or_id>              # full config, mounts, env, network, state (JSON)\ndocker inspect --format '{{.State.Status}}' \u003Cname_or_id>\ndocker stats                             # live CPU\u002Fmem\u002Fnetwork\u002Fblock I\u002FO\ndocker stats --no-stream                 # one snapshot, non-interactive\n",[1773],{"type":47,"tag":120,"props":1774,"children":1775},{"__ignoreMap":184},[1776,1792,1813,1851,1885,1922,1964,1996,2040,2057],{"type":47,"tag":190,"props":1777,"children":1778},{"class":192,"line":193},[1779,1783,1787],{"type":47,"tag":190,"props":1780,"children":1781},{"style":284},[1782],{"type":53,"value":22},{"type":47,"tag":190,"props":1784,"children":1785},{"style":259},[1786],{"type":53,"value":1558},{"type":47,"tag":190,"props":1788,"children":1789},{"style":696},[1790],{"type":53,"value":1791},"                                # running containers only\n",{"type":47,"tag":190,"props":1793,"children":1794},{"class":192,"line":233},[1795,1799,1803,1808],{"type":47,"tag":190,"props":1796,"children":1797},{"style":284},[1798],{"type":53,"value":22},{"type":47,"tag":190,"props":1800,"children":1801},{"style":259},[1802],{"type":53,"value":1558},{"type":47,"tag":190,"props":1804,"children":1805},{"style":259},[1806],{"type":53,"value":1807}," -a",{"type":47,"tag":190,"props":1809,"children":1810},{"style":696},[1811],{"type":53,"value":1812},"                             # all containers, including exited\n",{"type":47,"tag":190,"props":1814,"children":1815},{"class":192,"line":270},[1816,1820,1824,1828,1833,1838,1842,1847],{"type":47,"tag":190,"props":1817,"children":1818},{"style":284},[1819],{"type":53,"value":22},{"type":47,"tag":190,"props":1821,"children":1822},{"style":259},[1823],{"type":53,"value":1558},{"type":47,"tag":190,"props":1825,"children":1826},{"style":259},[1827],{"type":53,"value":1563},{"type":47,"tag":190,"props":1829,"children":1830},{"style":259},[1831],{"type":53,"value":1832}," status=running",{"type":47,"tag":190,"props":1834,"children":1835},{"style":259},[1836],{"type":53,"value":1837}," --format",{"type":47,"tag":190,"props":1839,"children":1840},{"style":203},[1841],{"type":53,"value":605},{"type":47,"tag":190,"props":1843,"children":1844},{"style":259},[1845],{"type":53,"value":1846},"{{.Names}} {{.Image}}",{"type":47,"tag":190,"props":1848,"children":1849},{"style":203},[1850],{"type":53,"value":1577},{"type":47,"tag":190,"props":1852,"children":1853},{"class":192,"line":280},[1854,1858,1863,1867,1872,1876,1880],{"type":47,"tag":190,"props":1855,"children":1856},{"style":284},[1857],{"type":53,"value":22},{"type":47,"tag":190,"props":1859,"children":1860},{"style":259},[1861],{"type":53,"value":1862}," logs",{"type":47,"tag":190,"props":1864,"children":1865},{"style":203},[1866],{"type":53,"value":1118},{"type":47,"tag":190,"props":1868,"children":1869},{"style":259},[1870],{"type":53,"value":1871},"name_or_i",{"type":47,"tag":190,"props":1873,"children":1874},{"style":197},[1875],{"type":53,"value":857},{"type":47,"tag":190,"props":1877,"children":1878},{"style":203},[1879],{"type":53,"value":1133},{"type":47,"tag":190,"props":1881,"children":1882},{"style":696},[1883],{"type":53,"value":1884},"                 # stdout\u002Fstderr\n",{"type":47,"tag":190,"props":1886,"children":1887},{"class":192,"line":329},[1888,1892,1896,1901,1905,1909,1913,1917],{"type":47,"tag":190,"props":1889,"children":1890},{"style":284},[1891],{"type":53,"value":22},{"type":47,"tag":190,"props":1893,"children":1894},{"style":259},[1895],{"type":53,"value":1862},{"type":47,"tag":190,"props":1897,"children":1898},{"style":259},[1899],{"type":53,"value":1900}," -f",{"type":47,"tag":190,"props":1902,"children":1903},{"style":203},[1904],{"type":53,"value":1118},{"type":47,"tag":190,"props":1906,"children":1907},{"style":259},[1908],{"type":53,"value":1871},{"type":47,"tag":190,"props":1910,"children":1911},{"style":197},[1912],{"type":53,"value":857},{"type":47,"tag":190,"props":1914,"children":1915},{"style":203},[1916],{"type":53,"value":1133},{"type":47,"tag":190,"props":1918,"children":1919},{"style":696},[1920],{"type":53,"value":1921},"              # follow (tail -f equivalent)\n",{"type":47,"tag":190,"props":1923,"children":1924},{"class":192,"line":352},[1925,1929,1933,1938,1943,1947,1951,1955,1959],{"type":47,"tag":190,"props":1926,"children":1927},{"style":284},[1928],{"type":53,"value":22},{"type":47,"tag":190,"props":1930,"children":1931},{"style":259},[1932],{"type":53,"value":1862},{"type":47,"tag":190,"props":1934,"children":1935},{"style":259},[1936],{"type":53,"value":1937}," --tail",{"type":47,"tag":190,"props":1939,"children":1940},{"style":413},[1941],{"type":53,"value":1942}," 100",{"type":47,"tag":190,"props":1944,"children":1945},{"style":203},[1946],{"type":53,"value":1118},{"type":47,"tag":190,"props":1948,"children":1949},{"style":259},[1950],{"type":53,"value":1871},{"type":47,"tag":190,"props":1952,"children":1953},{"style":197},[1954],{"type":53,"value":857},{"type":47,"tag":190,"props":1956,"children":1957},{"style":203},[1958],{"type":53,"value":1133},{"type":47,"tag":190,"props":1960,"children":1961},{"style":696},[1962],{"type":53,"value":1963},"      # last N lines\n",{"type":47,"tag":190,"props":1965,"children":1966},{"class":192,"line":373},[1967,1971,1975,1979,1983,1987,1991],{"type":47,"tag":190,"props":1968,"children":1969},{"style":284},[1970],{"type":53,"value":22},{"type":47,"tag":190,"props":1972,"children":1973},{"style":259},[1974],{"type":53,"value":1444},{"type":47,"tag":190,"props":1976,"children":1977},{"style":203},[1978],{"type":53,"value":1118},{"type":47,"tag":190,"props":1980,"children":1981},{"style":259},[1982],{"type":53,"value":1871},{"type":47,"tag":190,"props":1984,"children":1985},{"style":197},[1986],{"type":53,"value":857},{"type":47,"tag":190,"props":1988,"children":1989},{"style":203},[1990],{"type":53,"value":1133},{"type":47,"tag":190,"props":1992,"children":1993},{"style":696},[1994],{"type":53,"value":1995},"              # full config, mounts, env, network, state (JSON)\n",{"type":47,"tag":190,"props":1997,"children":1998},{"class":192,"line":404},[1999,2003,2007,2011,2015,2020,2024,2028,2032,2036],{"type":47,"tag":190,"props":2000,"children":2001},{"style":284},[2002],{"type":53,"value":22},{"type":47,"tag":190,"props":2004,"children":2005},{"style":259},[2006],{"type":53,"value":1444},{"type":47,"tag":190,"props":2008,"children":2009},{"style":259},[2010],{"type":53,"value":1837},{"type":47,"tag":190,"props":2012,"children":2013},{"style":203},[2014],{"type":53,"value":605},{"type":47,"tag":190,"props":2016,"children":2017},{"style":259},[2018],{"type":53,"value":2019},"{{.State.Status}}",{"type":47,"tag":190,"props":2021,"children":2022},{"style":203},[2023],{"type":53,"value":615},{"type":47,"tag":190,"props":2025,"children":2026},{"style":203},[2027],{"type":53,"value":1118},{"type":47,"tag":190,"props":2029,"children":2030},{"style":259},[2031],{"type":53,"value":1871},{"type":47,"tag":190,"props":2033,"children":2034},{"style":197},[2035],{"type":53,"value":857},{"type":47,"tag":190,"props":2037,"children":2038},{"style":203},[2039],{"type":53,"value":862},{"type":47,"tag":190,"props":2041,"children":2042},{"class":192,"line":419},[2043,2047,2052],{"type":47,"tag":190,"props":2044,"children":2045},{"style":284},[2046],{"type":53,"value":22},{"type":47,"tag":190,"props":2048,"children":2049},{"style":259},[2050],{"type":53,"value":2051}," stats",{"type":47,"tag":190,"props":2053,"children":2054},{"style":696},[2055],{"type":53,"value":2056},"                             # live CPU\u002Fmem\u002Fnetwork\u002Fblock I\u002FO\n",{"type":47,"tag":190,"props":2058,"children":2059},{"class":192,"line":428},[2060,2064,2068,2073],{"type":47,"tag":190,"props":2061,"children":2062},{"style":284},[2063],{"type":53,"value":22},{"type":47,"tag":190,"props":2065,"children":2066},{"style":259},[2067],{"type":53,"value":2051},{"type":47,"tag":190,"props":2069,"children":2070},{"style":259},[2071],{"type":53,"value":2072}," --no-stream",{"type":47,"tag":190,"props":2074,"children":2075},{"style":696},[2076],{"type":53,"value":2077},"                 # one snapshot, non-interactive\n",{"type":47,"tag":56,"props":2079,"children":2080},{},[2081,2087],{"type":47,"tag":120,"props":2082,"children":2084},{"className":2083},[],[2085],{"type":53,"value":2086},"docker inspect",{"type":53,"value":2088}," is the canonical source of truth for a container's mounts, env, cmd, network, and exit code. Use it to debug why a container isn't behaving as expected.",{"type":47,"tag":98,"props":2090,"children":2092},{"id":2091},"image-management",[2093],{"type":53,"value":2094},"Image management",{"type":47,"tag":179,"props":2096,"children":2098},{"className":181,"code":2097,"language":183,"meta":184,"style":184},"docker pull \u003Cimage>\ndocker image ls\ndocker system df                # disk usage\ndocker system prune -a --volumes # reclaim space — destructive, removes unused images + volumes\n",[2099],{"type":47,"tag":120,"props":2100,"children":2101},{"__ignoreMap":184},[2102,2129,2145,2167],{"type":47,"tag":190,"props":2103,"children":2104},{"class":192,"line":193},[2105,2109,2113,2117,2121,2125],{"type":47,"tag":190,"props":2106,"children":2107},{"style":284},[2108],{"type":53,"value":22},{"type":47,"tag":190,"props":2110,"children":2111},{"style":259},[2112],{"type":53,"value":1487},{"type":47,"tag":190,"props":2114,"children":2115},{"style":203},[2116],{"type":53,"value":1118},{"type":47,"tag":190,"props":2118,"children":2119},{"style":259},[2120],{"type":53,"value":1235},{"type":47,"tag":190,"props":2122,"children":2123},{"style":197},[2124],{"type":53,"value":1240},{"type":47,"tag":190,"props":2126,"children":2127},{"style":203},[2128],{"type":53,"value":862},{"type":47,"tag":190,"props":2130,"children":2131},{"class":192,"line":233},[2132,2136,2140],{"type":47,"tag":190,"props":2133,"children":2134},{"style":284},[2135],{"type":53,"value":22},{"type":47,"tag":190,"props":2137,"children":2138},{"style":259},[2139],{"type":53,"value":1439},{"type":47,"tag":190,"props":2141,"children":2142},{"style":259},[2143],{"type":53,"value":2144}," ls\n",{"type":47,"tag":190,"props":2146,"children":2147},{"class":192,"line":270},[2148,2152,2157,2162],{"type":47,"tag":190,"props":2149,"children":2150},{"style":284},[2151],{"type":53,"value":22},{"type":47,"tag":190,"props":2153,"children":2154},{"style":259},[2155],{"type":53,"value":2156}," system",{"type":47,"tag":190,"props":2158,"children":2159},{"style":259},[2160],{"type":53,"value":2161}," df",{"type":47,"tag":190,"props":2163,"children":2164},{"style":696},[2165],{"type":53,"value":2166},"                # disk usage\n",{"type":47,"tag":190,"props":2168,"children":2169},{"class":192,"line":280},[2170,2174,2178,2183,2187,2192],{"type":47,"tag":190,"props":2171,"children":2172},{"style":284},[2173],{"type":53,"value":22},{"type":47,"tag":190,"props":2175,"children":2176},{"style":259},[2177],{"type":53,"value":2156},{"type":47,"tag":190,"props":2179,"children":2180},{"style":259},[2181],{"type":53,"value":2182}," prune",{"type":47,"tag":190,"props":2184,"children":2185},{"style":259},[2186],{"type":53,"value":1807},{"type":47,"tag":190,"props":2188,"children":2189},{"style":259},[2190],{"type":53,"value":2191}," --volumes",{"type":47,"tag":190,"props":2193,"children":2194},{"style":696},[2195],{"type":53,"value":2196}," # reclaim space — destructive, removes unused images + volumes\n",{"type":47,"tag":56,"props":2198,"children":2199},{},[2200,2202,2207],{"type":53,"value":2201},"Pull once per host; ",{"type":47,"tag":120,"props":2203,"children":2205},{"className":2204},[],[2206],{"type":53,"value":651},{"type":53,"value":2208}," reuses cached image. NVIDIA images are typically 5-40GB.",{"type":47,"tag":98,"props":2210,"children":2212},{"id":2211},"split-disk-data-root-relocation",[2213],{"type":53,"value":2214},"Split-disk data-root relocation",{"type":47,"tag":56,"props":2216,"children":2217},{},[2218,2220,2226],{"type":53,"value":2219},"Some cloud GPU providers ship with a small root volume + larger ephemeral. Docker writes to ",{"type":47,"tag":120,"props":2221,"children":2223},{"className":2222},[],[2224],{"type":53,"value":2225},"\u002Fvar\u002Flib\u002Fdocker",{"type":53,"value":2227}," on root by default — large images fill it. Check:",{"type":47,"tag":179,"props":2229,"children":2231},{"className":181,"code":2230,"language":183,"meta":184,"style":184},"df -h \u002F         # root volume size\u002Ffree\nlsblk           # all block devices and mount points\n",[2232],{"type":47,"tag":120,"props":2233,"children":2234},{"__ignoreMap":184},[2235,2258],{"type":47,"tag":190,"props":2236,"children":2237},{"class":192,"line":193},[2238,2243,2248,2253],{"type":47,"tag":190,"props":2239,"children":2240},{"style":284},[2241],{"type":53,"value":2242},"df",{"type":47,"tag":190,"props":2244,"children":2245},{"style":259},[2246],{"type":53,"value":2247}," -h",{"type":47,"tag":190,"props":2249,"children":2250},{"style":259},[2251],{"type":53,"value":2252}," \u002F",{"type":47,"tag":190,"props":2254,"children":2255},{"style":696},[2256],{"type":53,"value":2257},"         # root volume size\u002Ffree\n",{"type":47,"tag":190,"props":2259,"children":2260},{"class":192,"line":233},[2261,2266],{"type":47,"tag":190,"props":2262,"children":2263},{"style":284},[2264],{"type":53,"value":2265},"lsblk",{"type":47,"tag":190,"props":2267,"children":2268},{"style":696},[2269],{"type":53,"value":2270},"           # all block devices and mount points\n",{"type":47,"tag":56,"props":2272,"children":2273},{},[2274,2276,2282,2284,2289],{"type":53,"value":2275},"If ",{"type":47,"tag":120,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":53,"value":2281},"\u002F",{"type":53,"value":2283}," is smaller than your total image footprint and there's a larger disk mounted elsewhere, relocate ",{"type":47,"tag":62,"props":2285,"children":2286},{},[2287],{"type":53,"value":2288},"before pulling images",{"type":53,"value":2290},":",{"type":47,"tag":179,"props":2292,"children":2294},{"className":181,"code":2293,"language":183,"meta":184,"style":184},"sudo systemctl stop docker\nsudo mkdir -p \u003Clarge_volume_path>\u002Fdocker\nsudo rsync -aP \u002Fvar\u002Flib\u002Fdocker\u002F \u003Clarge_volume_path>\u002Fdocker\u002F\nsudo mv \u002Fvar\u002Flib\u002Fdocker \u002Fvar\u002Flib\u002Fdocker.old\n\nsudo tee \u002Fetc\u002Fdocker\u002Fdaemon.json \u003C\u003C'EOF'\n{ \"data-root\": \"\u003Clarge_volume_path>\u002Fdocker\" }\nEOF\n\nsudo systemctl start docker\ndocker info | grep 'Docker Root Dir'\nsudo rm -rf \u002Fvar\u002Flib\u002Fdocker.old\n",[2295],{"type":47,"tag":120,"props":2296,"children":2297},{"__ignoreMap":184},[2298,2320,2360,2403,2425,2432,2459,2467,2475,2482,2502,2536],{"type":47,"tag":190,"props":2299,"children":2300},{"class":192,"line":193},[2301,2306,2311,2315],{"type":47,"tag":190,"props":2302,"children":2303},{"style":284},[2304],{"type":53,"value":2305},"sudo",{"type":47,"tag":190,"props":2307,"children":2308},{"style":259},[2309],{"type":53,"value":2310}," systemctl",{"type":47,"tag":190,"props":2312,"children":2313},{"style":259},[2314],{"type":53,"value":1008},{"type":47,"tag":190,"props":2316,"children":2317},{"style":259},[2318],{"type":53,"value":2319}," docker\n",{"type":47,"tag":190,"props":2321,"children":2322},{"class":192,"line":233},[2323,2327,2332,2337,2341,2346,2351,2355],{"type":47,"tag":190,"props":2324,"children":2325},{"style":284},[2326],{"type":53,"value":2305},{"type":47,"tag":190,"props":2328,"children":2329},{"style":259},[2330],{"type":53,"value":2331}," mkdir",{"type":47,"tag":190,"props":2333,"children":2334},{"style":259},[2335],{"type":53,"value":2336}," -p",{"type":47,"tag":190,"props":2338,"children":2339},{"style":203},[2340],{"type":53,"value":1118},{"type":47,"tag":190,"props":2342,"children":2343},{"style":259},[2344],{"type":53,"value":2345},"large_volume_pat",{"type":47,"tag":190,"props":2347,"children":2348},{"style":197},[2349],{"type":53,"value":2350},"h",{"type":47,"tag":190,"props":2352,"children":2353},{"style":203},[2354],{"type":53,"value":1133},{"type":47,"tag":190,"props":2356,"children":2357},{"style":259},[2358],{"type":53,"value":2359},"\u002Fdocker\n",{"type":47,"tag":190,"props":2361,"children":2362},{"class":192,"line":270},[2363,2367,2372,2377,2382,2386,2390,2394,2398],{"type":47,"tag":190,"props":2364,"children":2365},{"style":284},[2366],{"type":53,"value":2305},{"type":47,"tag":190,"props":2368,"children":2369},{"style":259},[2370],{"type":53,"value":2371}," rsync",{"type":47,"tag":190,"props":2373,"children":2374},{"style":259},[2375],{"type":53,"value":2376}," -aP",{"type":47,"tag":190,"props":2378,"children":2379},{"style":259},[2380],{"type":53,"value":2381}," \u002Fvar\u002Flib\u002Fdocker\u002F",{"type":47,"tag":190,"props":2383,"children":2384},{"style":203},[2385],{"type":53,"value":1118},{"type":47,"tag":190,"props":2387,"children":2388},{"style":259},[2389],{"type":53,"value":2345},{"type":47,"tag":190,"props":2391,"children":2392},{"style":197},[2393],{"type":53,"value":2350},{"type":47,"tag":190,"props":2395,"children":2396},{"style":203},[2397],{"type":53,"value":1133},{"type":47,"tag":190,"props":2399,"children":2400},{"style":259},[2401],{"type":53,"value":2402},"\u002Fdocker\u002F\n",{"type":47,"tag":190,"props":2404,"children":2405},{"class":192,"line":280},[2406,2410,2415,2420],{"type":47,"tag":190,"props":2407,"children":2408},{"style":284},[2409],{"type":53,"value":2305},{"type":47,"tag":190,"props":2411,"children":2412},{"style":259},[2413],{"type":53,"value":2414}," mv",{"type":47,"tag":190,"props":2416,"children":2417},{"style":259},[2418],{"type":53,"value":2419}," \u002Fvar\u002Flib\u002Fdocker",{"type":47,"tag":190,"props":2421,"children":2422},{"style":259},[2423],{"type":53,"value":2424}," \u002Fvar\u002Flib\u002Fdocker.old\n",{"type":47,"tag":190,"props":2426,"children":2427},{"class":192,"line":329},[2428],{"type":47,"tag":190,"props":2429,"children":2430},{"emptyLinePlaceholder":274},[2431],{"type":53,"value":277},{"type":47,"tag":190,"props":2433,"children":2434},{"class":192,"line":352},[2435,2439,2444,2449,2454],{"type":47,"tag":190,"props":2436,"children":2437},{"style":284},[2438],{"type":53,"value":2305},{"type":47,"tag":190,"props":2440,"children":2441},{"style":259},[2442],{"type":53,"value":2443}," tee",{"type":47,"tag":190,"props":2445,"children":2446},{"style":259},[2447],{"type":53,"value":2448}," \u002Fetc\u002Fdocker\u002Fdaemon.json",{"type":47,"tag":190,"props":2450,"children":2451},{"style":203},[2452],{"type":53,"value":2453}," \u003C\u003C",{"type":47,"tag":190,"props":2455,"children":2456},{"style":203},[2457],{"type":53,"value":2458},"'EOF'\n",{"type":47,"tag":190,"props":2460,"children":2461},{"class":192,"line":373},[2462],{"type":47,"tag":190,"props":2463,"children":2464},{"style":259},[2465],{"type":53,"value":2466},"{ \"data-root\": \"\u003Clarge_volume_path>\u002Fdocker\" }\n",{"type":47,"tag":190,"props":2468,"children":2469},{"class":192,"line":404},[2470],{"type":47,"tag":190,"props":2471,"children":2472},{"style":203},[2473],{"type":53,"value":2474},"EOF\n",{"type":47,"tag":190,"props":2476,"children":2477},{"class":192,"line":419},[2478],{"type":47,"tag":190,"props":2479,"children":2480},{"emptyLinePlaceholder":274},[2481],{"type":53,"value":277},{"type":47,"tag":190,"props":2483,"children":2484},{"class":192,"line":428},[2485,2489,2493,2498],{"type":47,"tag":190,"props":2486,"children":2487},{"style":284},[2488],{"type":53,"value":2305},{"type":47,"tag":190,"props":2490,"children":2491},{"style":259},[2492],{"type":53,"value":2310},{"type":47,"tag":190,"props":2494,"children":2495},{"style":259},[2496],{"type":53,"value":2497}," start",{"type":47,"tag":190,"props":2499,"children":2500},{"style":259},[2501],{"type":53,"value":2319},{"type":47,"tag":190,"props":2503,"children":2504},{"class":192,"line":436},[2505,2509,2514,2518,2523,2527,2532],{"type":47,"tag":190,"props":2506,"children":2507},{"style":284},[2508],{"type":53,"value":22},{"type":47,"tag":190,"props":2510,"children":2511},{"style":259},[2512],{"type":53,"value":2513}," info",{"type":47,"tag":190,"props":2515,"children":2516},{"style":203},[2517],{"type":53,"value":581},{"type":47,"tag":190,"props":2519,"children":2520},{"style":284},[2521],{"type":53,"value":2522}," grep",{"type":47,"tag":190,"props":2524,"children":2525},{"style":203},[2526],{"type":53,"value":605},{"type":47,"tag":190,"props":2528,"children":2529},{"style":259},[2530],{"type":53,"value":2531},"Docker Root Dir",{"type":47,"tag":190,"props":2533,"children":2534},{"style":203},[2535],{"type":53,"value":1577},{"type":47,"tag":190,"props":2537,"children":2538},{"class":192,"line":449},[2539,2543,2547,2552],{"type":47,"tag":190,"props":2540,"children":2541},{"style":284},[2542],{"type":53,"value":2305},{"type":47,"tag":190,"props":2544,"children":2545},{"style":259},[2546],{"type":53,"value":1037},{"type":47,"tag":190,"props":2548,"children":2549},{"style":259},[2550],{"type":53,"value":2551}," -rf",{"type":47,"tag":190,"props":2553,"children":2554},{"style":259},[2555],{"type":53,"value":2424},{"type":47,"tag":98,"props":2557,"children":2559},{"id":2558},"networks-multi-container-patterns",[2560],{"type":53,"value":2561},"Networks (multi-container patterns)",{"type":47,"tag":56,"props":2563,"children":2564},{},[2565],{"type":53,"value":2566},"For microservice containers that talk to each other by name, create a docker network and attach containers:",{"type":47,"tag":179,"props":2568,"children":2570},{"className":181,"code":2569,"language":183,"meta":184,"style":184},"docker network create tao-net\ndocker run --network tao-net --name api ...\ndocker run --network tao-net --name worker ...   # can resolve `api` by name\n",[2571],{"type":47,"tag":120,"props":2572,"children":2573},{"__ignoreMap":184},[2574,2596,2630],{"type":47,"tag":190,"props":2575,"children":2576},{"class":192,"line":193},[2577,2581,2586,2591],{"type":47,"tag":190,"props":2578,"children":2579},{"style":284},[2580],{"type":53,"value":22},{"type":47,"tag":190,"props":2582,"children":2583},{"style":259},[2584],{"type":53,"value":2585}," network",{"type":47,"tag":190,"props":2587,"children":2588},{"style":259},[2589],{"type":53,"value":2590}," create",{"type":47,"tag":190,"props":2592,"children":2593},{"style":259},[2594],{"type":53,"value":2595}," tao-net\n",{"type":47,"tag":190,"props":2597,"children":2598},{"class":192,"line":233},[2599,2603,2607,2612,2617,2621,2626],{"type":47,"tag":190,"props":2600,"children":2601},{"style":284},[2602],{"type":53,"value":22},{"type":47,"tag":190,"props":2604,"children":2605},{"style":259},[2606],{"type":53,"value":459},{"type":47,"tag":190,"props":2608,"children":2609},{"style":259},[2610],{"type":53,"value":2611}," --network",{"type":47,"tag":190,"props":2613,"children":2614},{"style":259},[2615],{"type":53,"value":2616}," tao-net",{"type":47,"tag":190,"props":2618,"children":2619},{"style":259},[2620],{"type":53,"value":1066},{"type":47,"tag":190,"props":2622,"children":2623},{"style":259},[2624],{"type":53,"value":2625}," api",{"type":47,"tag":190,"props":2627,"children":2628},{"style":259},[2629],{"type":53,"value":1075},{"type":47,"tag":190,"props":2631,"children":2632},{"class":192,"line":270},[2633,2637,2641,2645,2649,2653,2658,2663],{"type":47,"tag":190,"props":2634,"children":2635},{"style":284},[2636],{"type":53,"value":22},{"type":47,"tag":190,"props":2638,"children":2639},{"style":259},[2640],{"type":53,"value":459},{"type":47,"tag":190,"props":2642,"children":2643},{"style":259},[2644],{"type":53,"value":2611},{"type":47,"tag":190,"props":2646,"children":2647},{"style":259},[2648],{"type":53,"value":2616},{"type":47,"tag":190,"props":2650,"children":2651},{"style":259},[2652],{"type":53,"value":1066},{"type":47,"tag":190,"props":2654,"children":2655},{"style":259},[2656],{"type":53,"value":2657}," worker",{"type":47,"tag":190,"props":2659,"children":2660},{"style":259},[2661],{"type":53,"value":2662}," ...",{"type":47,"tag":190,"props":2664,"children":2665},{"style":696},[2666],{"type":53,"value":2667},"   # can resolve `api` by name\n",{"type":47,"tag":56,"props":2669,"children":2670},{},[2671],{"type":53,"value":2672},"Most TAO training workloads don't need this — single container per job.",{"type":47,"tag":98,"props":2674,"children":2676},{"id":2675},"common-error-modes",[2677],{"type":53,"value":2678},"Common error modes",{"type":47,"tag":56,"props":2680,"children":2681},{},[2682,2690,2692,2697,2699,2705,2707,2713],{"type":47,"tag":62,"props":2683,"children":2684},{},[2685],{"type":47,"tag":120,"props":2686,"children":2688},{"className":2687},[],[2689],{"type":53,"value":888},{"type":53,"value":2691}," — NVIDIA Container Toolkit missing or Docker is not configured for the NVIDIA runtime. Run ",{"type":47,"tag":120,"props":2693,"children":2695},{"className":2694},[],[2696],{"type":53,"value":125},{"type":53,"value":2698}," with ",{"type":47,"tag":120,"props":2700,"children":2702},{"className":2701},[],[2703],{"type":53,"value":2704},"--backend docker --install",{"type":53,"value":2706}," after user approval (append ",{"type":47,"tag":120,"props":2708,"children":2710},{"className":2709},[],[2711],{"type":53,"value":2712},"--yes",{"type":53,"value":2714}," for a non-interactive agent run), then restart Docker.",{"type":47,"tag":56,"props":2716,"children":2717},{},[2718,2727,2729,2735,2737,2743],{"type":47,"tag":62,"props":2719,"children":2720},{},[2721],{"type":47,"tag":120,"props":2722,"children":2724},{"className":2723},[],[2725],{"type":53,"value":2726},"unauthorized: authentication required",{"type":53,"value":2728}," on ",{"type":47,"tag":120,"props":2730,"children":2732},{"className":2731},[],[2733],{"type":53,"value":2734},"docker pull",{"type":53,"value":2736}," — NGC key invalid\u002Fmissing. Re-run ",{"type":47,"tag":120,"props":2738,"children":2740},{"className":2739},[],[2741],{"type":53,"value":2742},"docker login nvcr.io",{"type":53,"value":152},{"type":47,"tag":56,"props":2745,"children":2746},{},[2747,2756,2758,2764,2766,2772,2774,2780],{"type":47,"tag":62,"props":2748,"children":2749},{},[2750],{"type":47,"tag":120,"props":2751,"children":2753},{"className":2752},[],[2754],{"type":53,"value":2755},"no space left on device",{"type":53,"value":2757}," — root volume full. ",{"type":47,"tag":120,"props":2759,"children":2761},{"className":2760},[],[2762],{"type":53,"value":2763},"docker system df",{"type":53,"value":2765}," to inspect; relocate ",{"type":47,"tag":120,"props":2767,"children":2769},{"className":2768},[],[2770],{"type":53,"value":2771},"data-root",{"type":53,"value":2773}," (above) or ",{"type":47,"tag":120,"props":2775,"children":2777},{"className":2776},[],[2778],{"type":53,"value":2779},"docker system prune -a --volumes",{"type":53,"value":152},{"type":47,"tag":56,"props":2782,"children":2783},{},[2784,2800,2801,2806,2808,2814,2816,2822],{"type":47,"tag":62,"props":2785,"children":2786},{},[2787,2792,2794],{"type":47,"tag":120,"props":2788,"children":2790},{"className":2789},[],[2791],{"type":53,"value":941},{"type":53,"value":2793}," \u002F ",{"type":47,"tag":120,"props":2795,"children":2797},{"className":2796},[],[2798],{"type":53,"value":2799},"DataLoader worker exited unexpectedly",{"type":53,"value":136},{"type":47,"tag":120,"props":2802,"children":2804},{"className":2803},[],[2805],{"type":53,"value":925},{"type":53,"value":2807}," too small. Increase shared memory with ",{"type":47,"tag":120,"props":2809,"children":2811},{"className":2810},[],[2812],{"type":53,"value":2813},"--shm-size",{"type":53,"value":2815}," (e.g. ",{"type":47,"tag":120,"props":2817,"children":2819},{"className":2818},[],[2820],{"type":53,"value":2821},"--shm-size=16g",{"type":53,"value":2823},").",{"type":47,"tag":56,"props":2825,"children":2826},{},[2827,2838,2840,2846,2848,2854],{"type":47,"tag":62,"props":2828,"children":2829},{},[2830,2836],{"type":47,"tag":120,"props":2831,"children":2833},{"className":2832},[],[2834],{"type":53,"value":2835},"permission denied",{"type":53,"value":2837}," on bind-mounted paths",{"type":53,"value":2839}," — container UID ≠ host UID. Either ",{"type":47,"tag":120,"props":2841,"children":2843},{"className":2842},[],[2844],{"type":53,"value":2845},"-u $(id -u):$(id -g)",{"type":53,"value":2847},", or pre-create host files owned by the host user, or ",{"type":47,"tag":120,"props":2849,"children":2851},{"className":2850},[],[2852],{"type":53,"value":2853},"chmod 777",{"type":53,"value":2855}," (dev only).",{"type":47,"tag":56,"props":2857,"children":2858},{},[2859,2876,2878,2884,2886,2892,2894,2899],{"type":47,"tag":62,"props":2860,"children":2861},{},[2862,2868,2870],{"type":47,"tag":120,"props":2863,"children":2865},{"className":2864},[],[2866],{"type":53,"value":2867},"Error: No such container: \u003Cname>",{"type":53,"value":2869}," after ",{"type":47,"tag":120,"props":2871,"children":2873},{"className":2872},[],[2874],{"type":53,"value":2875},"docker run -d",{"type":53,"value":2877}," — container crashed on startup. ",{"type":47,"tag":120,"props":2879,"children":2881},{"className":2880},[],[2882],{"type":53,"value":2883},"docker ps -a",{"type":53,"value":2885}," shows exited; ",{"type":47,"tag":120,"props":2887,"children":2889},{"className":2888},[],[2890],{"type":53,"value":2891},"docker logs \u003Cname>",{"type":53,"value":2893}," for cause. Drop ",{"type":47,"tag":120,"props":2895,"children":2897},{"className":2896},[],[2898],{"type":53,"value":898},{"type":53,"value":2900}," while debugging.",{"type":47,"tag":98,"props":2902,"children":2904},{"id":2903},"scope-boundary",[2905],{"type":53,"value":2906},"Scope boundary",{"type":47,"tag":56,"props":2908,"children":2909},{},[2910,2912,2917],{"type":53,"value":2911},"This skill covers the ",{"type":47,"tag":2913,"props":2914,"children":2915},"em",{},[2916],{"type":53,"value":79},{"type":53,"value":2918}," of running docker on a GPU host. Platform-specific layering (how to get onto the host, dispatch via a CLI wrapper) lives in:",{"type":47,"tag":869,"props":2920,"children":2921},{},[2922,2941],{"type":47,"tag":109,"props":2923,"children":2924},{},[2925,2931,2933,2939],{"type":47,"tag":120,"props":2926,"children":2928},{"className":2927},[],[2929],{"type":53,"value":2930},"tao-skill-bank:tao-run-on-brev",{"type":53,"value":2932}," — running docker via ",{"type":47,"tag":120,"props":2934,"children":2936},{"className":2935},[],[2937],{"type":53,"value":2938},"brev exec",{"type":53,"value":2940}," on a Brev instance",{"type":47,"tag":109,"props":2942,"children":2943},{},[2944,2950],{"type":47,"tag":120,"props":2945,"children":2947},{"className":2946},[],[2948],{"type":53,"value":2949},"tao-skill-bank:tao-run-platform",{"type":53,"value":2951}," — optional Python layer wrapping docker invocations with Job handles, state persistence, and S3 I\u002FO",{"type":47,"tag":56,"props":2953,"children":2954},{},[2955,2957,2961,2963,2967],{"type":53,"value":2956},"Model and data skills specify ",{"type":47,"tag":62,"props":2958,"children":2959},{},[2960],{"type":53,"value":66},{"type":53,"value":2962}," image and command; they defer to this skill for the ",{"type":47,"tag":62,"props":2964,"children":2965},{},[2966],{"type":53,"value":79},{"type":53,"value":152},{"type":47,"tag":2969,"props":2970,"children":2971},"style",{},[2972],{"type":53,"value":2973},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2975,"total":3130},[2976,2994,3008,3019,3031,3045,3058,3072,3085,3096,3110,3119],{"slug":2977,"name":2977,"fn":2978,"description":2979,"org":2980,"tags":2981,"stars":2991,"repoUrl":2992,"updatedAt":2993},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2982,2985,2988],{"name":2983,"slug":2984,"type":15},"Documentation","documentation",{"name":2986,"slug":2987,"type":15},"MCP","mcp",{"name":2989,"slug":2990,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2995,"name":2995,"fn":2996,"description":2997,"org":2998,"tags":2999,"stars":3005,"repoUrl":3006,"updatedAt":3007},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3000,3001,3002],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":3003,"slug":3004,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":3009,"name":3009,"fn":3010,"description":3011,"org":3012,"tags":3013,"stars":3005,"repoUrl":3006,"updatedAt":3018},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3014,3017],{"name":3015,"slug":3016,"type":15},"CI\u002FCD","ci-cd",{"name":17,"slug":18,"type":15},"2026-07-14T05:25:59.97109",{"slug":3020,"name":3020,"fn":3021,"description":3022,"org":3023,"tags":3024,"stars":3005,"repoUrl":3006,"updatedAt":3030},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3025,3026,3027],{"name":3015,"slug":3016,"type":15},{"name":17,"slug":18,"type":15},{"name":3028,"slug":3029,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":3032,"name":3032,"fn":3033,"description":3034,"org":3035,"tags":3036,"stars":3005,"repoUrl":3006,"updatedAt":3044},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3037,3040,3041],{"name":3038,"slug":3039,"type":15},"Debugging","debugging",{"name":3028,"slug":3029,"type":15},{"name":3042,"slug":3043,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":3046,"name":3046,"fn":3047,"description":3048,"org":3049,"tags":3050,"stars":3005,"repoUrl":3006,"updatedAt":3057},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3051,3054],{"name":3052,"slug":3053,"type":15},"Best Practices","best-practices",{"name":3055,"slug":3056,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":3059,"name":3059,"fn":3060,"description":3061,"org":3062,"tags":3063,"stars":3005,"repoUrl":3006,"updatedAt":3071},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3064,3067,3070],{"name":3065,"slug":3066,"type":15},"Machine Learning","machine-learning",{"name":3068,"slug":3069,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":3073,"name":3073,"fn":3074,"description":3075,"org":3076,"tags":3077,"stars":3005,"repoUrl":3006,"updatedAt":3084},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3078,3081],{"name":3079,"slug":3080,"type":15},"QA","qa",{"name":3082,"slug":3083,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":3086,"name":3086,"fn":3087,"description":3088,"org":3089,"tags":3090,"stars":3005,"repoUrl":3006,"updatedAt":3095},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3091,3092],{"name":17,"slug":18,"type":15},{"name":3093,"slug":3094,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":3097,"name":3097,"fn":3098,"description":3099,"org":3100,"tags":3101,"stars":3005,"repoUrl":3006,"updatedAt":3109},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3102,3105,3106],{"name":3103,"slug":3104,"type":15},"Code Review","code-review",{"name":3028,"slug":3029,"type":15},{"name":3107,"slug":3108,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":3111,"name":3111,"fn":3112,"description":3113,"org":3114,"tags":3115,"stars":3005,"repoUrl":3006,"updatedAt":3118},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3116,3117],{"name":3079,"slug":3080,"type":15},{"name":3082,"slug":3083,"type":15},"2026-07-14T05:25:54.928983",{"slug":3120,"name":3120,"fn":3121,"description":3122,"org":3123,"tags":3124,"stars":3005,"repoUrl":3006,"updatedAt":3129},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3125,3128],{"name":3126,"slug":3127,"type":15},"Automation","automation",{"name":3015,"slug":3016,"type":15},"2026-07-30T05:29:03.275638",525,{"items":3132,"total":3226},[3133,3150,3160,3174,3184,3199,3212],{"slug":3134,"name":3134,"fn":3135,"description":3136,"org":3137,"tags":3138,"stars":23,"repoUrl":24,"updatedAt":3149},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3139,3142,3145,3146],{"name":3140,"slug":3141,"type":15},"Data Analysis","data-analysis",{"name":3143,"slug":3144,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":3147,"slug":3148,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":3151,"name":3151,"fn":3152,"description":3153,"org":3154,"tags":3155,"stars":23,"repoUrl":24,"updatedAt":3159},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3156,3157,3158],{"name":17,"slug":18,"type":15},{"name":3093,"slug":3094,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":3161,"name":3161,"fn":3162,"description":3163,"org":3164,"tags":3165,"stars":23,"repoUrl":24,"updatedAt":3173},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3166,3169,3170],{"name":3167,"slug":3168,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":3171,"slug":3172,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":3175,"name":3175,"fn":3176,"description":3177,"org":3178,"tags":3179,"stars":23,"repoUrl":24,"updatedAt":3183},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3180,3181,3182],{"name":3140,"slug":3141,"type":15},{"name":9,"slug":8,"type":15},{"name":3082,"slug":3083,"type":15},"2026-07-17T05:29:03.913266",{"slug":3185,"name":3185,"fn":3186,"description":3187,"org":3188,"tags":3189,"stars":23,"repoUrl":24,"updatedAt":3198},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3190,3191,3194,3195],{"name":3126,"slug":3127,"type":15},{"name":3192,"slug":3193,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":3196,"slug":3197,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":3200,"name":3200,"fn":3201,"description":3202,"org":3203,"tags":3204,"stars":23,"repoUrl":24,"updatedAt":3211},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3205,3206,3207,3208],{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":3209,"slug":3210,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":3213,"name":3213,"fn":3214,"description":3215,"org":3216,"tags":3217,"stars":23,"repoUrl":24,"updatedAt":3225},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3218,3219,3222],{"name":9,"slug":8,"type":15},{"name":3220,"slug":3221,"type":15},"Quantum Computing","quantum-computing",{"name":3223,"slug":3224,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",310]