mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-26 06:52:57 +08:00
* feat(sandbox): use policy-first OCI image identity Closes #2331 Preserve per-field policy omission, derive Docker and Podman fallbacks from the inspected immutable image, and resolve the final numeric identity before starting agent children. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(sandbox): preserve declared process identities Keep explicit policy values and OCI-declared names intact, defer passwd lookup until a primary GID is required, and refresh stale policy examples. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(supervisor): reuse resolved OCI identity Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(supervisor): allow Linux pre-exec arguments Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(kubernetes): protect resolved sandbox identity Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(sandbox): prepare workspace for OCI identity Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * refactor(sandbox): own only workspace root Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(sandbox): harden partial identity drops Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * test(sandbox): scope OCI image e2e to Docker Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(sandbox): narrow OCI identity fallback scope Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * test(podman): cover OCI identity launch Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> * fix(podman): exercise OCI fallback in E2E Signed-off-by: Matthew Grossman <mgrossman@nvidia.com> --------- Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
34 lines
1.3 KiB
Docker
34 lines
1.3 KiB
Docker
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Example: a minimal Python REST API that runs inside a OpenShell sandbox.
|
|
# The image exposes port 8080 with a /hello endpoint. Use port forwarding
|
|
# (--forward 8080 on the CLI) to reach it from your local machine.
|
|
|
|
FROM python:3.13-slim
|
|
|
|
# System tools useful for sandbox networking and debugging.
|
|
# iproute2: required for network namespace management (ip netns, veth pairs)
|
|
# nftables: optional, enables bypass detection (log + reject for direct connections)
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl iproute2 nftables \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN groupadd --gid 1500 app \
|
|
&& useradd --uid 1500 --gid app --create-home app
|
|
|
|
RUN install -d -o app -g app /sandbox
|
|
WORKDIR /sandbox
|
|
COPY --chown=app:app app.py .
|
|
|
|
EXPOSE 8080
|
|
|
|
# Docker and Podman use this non-root identity when policy omits either process
|
|
# identity field. OpenShell starts the supervisor as root and drops only agent
|
|
# children to this account.
|
|
USER app
|
|
|
|
# NOTE: The sandbox supervisor replaces CMD at runtime. Pass the start
|
|
# command explicitly: openshell sandbox create ... -- python /sandbox/app.py
|
|
CMD ["python", "app.py"]
|