Skip to main content

run-in-dev-container

Use when you need to run a command (build, test, tool) inside the IC dev container via ./ci/container/container-run.sh — including on a host that has Docker but not podman (set CONTAINER_RUNTIME=docker) — or when you need to keep a namespace.so devbox awake during long-running work.

설치로 이동

소스 정보

저장소
dfinity/ic
최근 소스 활동
2026년 9월 7일 14:35
감지된 SKILL.md 언어
영어
스타
1,792
포크
410

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
run-in-dev-container
description
Use when you need to run a command (build, test, tool) inside the IC dev container via ./ci/container/container-run.sh — including on a host that has Docker but not podman (set CONTAINER_RUNTIME=docker) — or when you need to keep a namespace.so devbox awake during long-running work.
# Running commands in the IC dev container `./ci/container/container-run.sh` runs a command inside the pinned IC dev container (the `ghcr.io/dfinity/ic-dev` image), bind-mounting the repo checkout at the same canonical (symlink-resolved) absolute path it has on the host, which is also the working directory, and reusing `~/.cache` for the Bazel/cargo caches. Prefer running builds and build tooling through it: it gives you the exact, pinned toolchain environment, and standardizing on the container — regardless of whether it's backed by podman or docker — keeps things simple and consistent. ## Choosing the container runtime The script supports two runtimes, selected by the `CONTAINER_RUNTIME` env var: - **podman** (default) — rootful and privileged. - **docker** — for hosts that have the Docker daemon but **no podman**. Which one to use depends on where you are: - **namespace.so devboxes** (e.g. this machine — `test -d /.namespace`): use **docker**. podman isn't available there, and the namespace.so daemon can't do some things podman's setup expects (e.g. bind-mounting the host's `/tmp`). - **DFINITY infra, in particular a "devenv" machine** (which `container-run.sh` detects via `/var/lib/cloud/instance` plus a `/hoststorage` mount): use **podman** — the default, so no env var needed. On a docker host, prefix every invocation with `CONTAINER_RUNTIME=docker`: ```sh # interactive shell in the container CONTAINER_RUNTIME=docker ./ci/container/container-run.sh # run a single command and exit CONTAINER_RUNTIME=docker ./ci/container/container-run.sh <command> [args...] ``` If `CONTAINER_RUNTIME` is unsupported the script errors out early; if the chosen runtime's daemon isn't reachable it prints which command it tried. ## Notes - The repo is mounted at its canonical host path (`git rev-parse --show-toplevel`, i.e. with symlinks resolved) and that's the working directory, so both repo-relative paths and canonical absolute host paths of files in the checkout work inside the container, e.g. `CONTAINER_RUNTIME=docker ./ci/container/container-run.sh ./path/to/script.sh`. Linked git worktrees work too: run the script from the worktree directory. - The image is pulled from `ghcr.io` on first use (large, one-time). - Anything the command writes into the checkout (or `~/.cache`) persists on the host, since those are bind-mounted. Each checkout gets its own bazel output base; the install base and repository cache are shared. - Don't nest: the script refuses to run inside an existing container. ## Keeping a namespace.so devbox awake for long-running work On a namespace.so devbox (`test -d /.namespace`), the machine can go to sleep during a long unattended operation — a multi-minute `bazel build`/`bazel test`, a container image build/pull, etc. — killing it partway through. Before starting long-running work, create the marker file: ```sh mkdir -p /.namespace/tasks && touch /.namespace/tasks/stay-live ``` and remove it once the work is done, so the devbox is allowed to sleep again: ```sh rm -f /.namespace/tasks/stay-live ``` This is independent of whether the work itself runs inside the dev container or directly on the host.
GitHub에서 보기