Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2f18417
vminit: remove guest bundle directory on container delete
dmcgowan Jul 12, 2026
8b94a8f
sandbox: implement VM-per-pod SandboxService and shared rootfs assembly
dmcgowan Jul 12, 2026
cae22f4
sandbox: give member containers a shared guest network namespace
dmcgowan Jul 12, 2026
b05c641
sandbox: support bind-mount volumes and pod-level DNS/hostname/sysctls
dmcgowan Jul 12, 2026
5d3937d
sandbox: share PID and IPC namespaces between member containers
dmcgowan Jul 12, 2026
930d729
test: add critest (CRI conformance) harness using the shim sandboxer
dmcgowan Jul 12, 2026
a73b19f
test/critest: skip known architectural-limitation specs by default
dmcgowan Jul 12, 2026
e461cf6
docs: keep sandbox-architecture.md focused on current design
dmcgowan Jul 12, 2026
23896b8
vm/libkrun: enter the pod network namespace on the krun_start_enter t…
dmcgowan Jul 13, 2026
901420b
shim: clear host AppArmor profile from container specs
dmcgowan Jul 15, 2026
b502096
shim: fix cross-platform build breakage and file-header lint failures
dmcgowan Jul 17, 2026
dedb992
shim: verify network sandbox path is backed by nsfs before pinning it
dmcgowan Jul 17, 2026
7b476d7
shim: prevent UDS mount placeholders from escaping the container rootfs
dmcgowan Jul 17, 2026
2db599e
vminit: fix pod-pause anchor leak; reduce forwarded-socket permissions
dmcgowan Jul 17, 2026
6328a51
plugins/shim/task: split task plugin registration into manager + TTRP…
dmcgowan Jul 17, 2026
a5ff93e
sandbox: cleanup plugin and ensure options and netns are exposed
dmcgowan Jul 17, 2026
8ab70a5
shim: map container UID 0 (not the host UID) in the shim's own userns
dmcgowan Jul 18, 2026
948f2de
shim/sandbox: use path.Join for in-guest paths, not filepath.Join
dmcgowan Jul 18, 2026
adf35c6
mountutil: register the partial-mount cleanup defer before the loop
dmcgowan Jul 18, 2026
21e9453
shim/task: use an explicit access mode when creating UDS placeholder …
dmcgowan Jul 18, 2026
b6c1949
shim: create UDS mount placeholders for the assembled rootfs, not jus…
dmcgowan Jul 20, 2026
a7c52d6
Split task service to manager and ttrpc service
dmcgowan Jul 30, 2026
8bf1db2
namespaces: replace PodNamespaces with an on-demand NamespaceManager
dmcgowan Jul 29, 2026
444d2b8
namespaces: anchor PID namespaces with a dedicated pause binary
dmcgowan Jul 30, 2026
fe411d5
sandbox: only create a guest network namespace when there is a NIC
dmcgowan Jul 30, 2026
dbd58f4
namespaces: rename NamespaceManager to SharedResources, add shared /d…
dmcgowan Aug 10, 2026
b145b3e
pkg/shim/manager: isolate mount propagation to prevent host mount leaks
dmcgowan Aug 10, 2026
6bf29ca
docs: refresh sandbox-architecture.md for SharedResources and other f…
dmcgowan Aug 10, 2026
e8a2376
vendor: bump github.com/containerd/shimtest to a0143efafccb
dmcgowan Aug 18, 2026
3378e5b
kernel/tsi: forward the resolved port for ephemeral bind()s
dmcgowan Aug 19, 2026
68cac95
vminit/mount: reconcile bookkeeping against the real mount table
dmcgowan Aug 21, 2026
a3cffbb
sandbox: fix guest network namespace sharing, add UTS namespace sharing
dmcgowan Aug 21, 2026
769cd59
socketforward: note the notify channel race across sibling containers
dmcgowan Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ kernel/*.old
test/shim/testdata/testbin
test/stress/testdata/testbin
.task

# Rust build output. Cargo.lock is intentionally committed: crates/pause
# builds an executable, not a library.
crates/*/target/
**/*.rs.bk
34 changes: 33 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,34 @@ WORKDIR /usr/src/crun
ARG TARGETARCH
RUN mkdir /build && wget -O /build/crun https://github.com/containers/crun/releases/download/1.24/crun-1.24-linux-${TARGETARCH}-disable-systemd

# Anchor process for guest PID namespaces (see crates/pause). Built against
# musl so it is fully static: it runs as PID 1 of a namespace in a rootfs that
# carries no dynamic loader of its own.
FROM "${RUST_IMAGE}" AS pause-build
WORKDIR /usr/src/pause

ARG TARGETARCH
RUN <<EOT
set -e
case "${TARGETARCH}" in
amd64) triple=x86_64-unknown-linux-musl ;;
arm64) triple=aarch64-unknown-linux-musl ;;
*) echo "unsupported TARGETARCH for pause: ${TARGETARCH}" >&2; exit 1 ;;
esac
echo "${triple}" > /rust-target
rustup target add "${triple}"
EOT

COPY crates/pause/ .
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=pause-cargo-registry \
--mount=type=cache,target=/usr/src/pause/target,id=pause-build-${TARGETARCH} <<EOT
set -e
triple="$(cat /rust-target)"
cargo build --release --locked --target "${triple}"
mkdir -p /build
cp "target/${triple}/release/nerdbox-pause" /build/nerdbox-pause
EOT

FROM base AS erofs-build
WORKDIR /usr/src/rootfs
ARG TARGETPLATFORM
Expand All @@ -236,14 +264,18 @@ RUN --mount=type=cache,sharing=locked,id=erofs-aptlib,target=/var/lib/apt \
# making it writable even though the erofs image itself is read-only.
# /var/run is a symlink to /run so that crun state writes land on the
# writable /run tmpfs rather than failing against the read-only rootfs.
# Note: /run/containers (the sandbox shared filesystem mount point) is
# created at runtime under the /run tmpfs, so it does not need to be
# pre-created here.
RUN mkdir -p dev etc proc run sbin sys tmp var && ln -s /run var/run

COPY --from=vminit-build /build/vminitd ./sbin/vminitd
COPY --from=crun-build /build/crun ./sbin/crun
COPY --from=pause-build /build/nerdbox-pause ./sbin/nerdbox-pause

RUN <<EOT
set -e
chmod +x sbin/vminitd sbin/crun
chmod +x sbin/vminitd sbin/crun sbin/nerdbox-pause
mkdir /build
mkfs.erofs -zlz4 /build/nerdbox-rootfs.erofs .
EOT
Expand Down
Loading
Loading