Skip to main content

GVisorRuntime

Struct GVisorRuntime 

Source
pub struct GVisorRuntime { /* private fields */ }
Expand description

GVisor runtime manager

Implements the gVisor state machine from NucleusSecurity_GVisor_GVisorRuntime.tla

Implementations§

Source§

impl GVisorRuntime

Source

pub fn new() -> Result<Self>

Create a new GVisor runtime manager

This checks for runsc binary availability

Source

pub fn with_path(runsc_path: String) -> Self

Create a GVisor runtime with a pre-resolved runsc path.

Use this when the path was resolved before privilege changes (e.g. before entering a user namespace where UID 0 would block PATH-based lookup).

Source

pub fn resolve_path() -> Result<String>

Resolve the runsc path without constructing a full runtime. Call this before fork/unshare so the path is resolved while still unprivileged.

Source

pub fn exec_with_oci_bundle( &self, container_id: &str, bundle: &OciBundle, ) -> Result<()>

Execute using gVisor with an OCI bundle

This is the OCI-compliant way to run containers with gVisor. The network_mode parameter controls gVisor’s –network flag:

  • GVisorNetworkMode::None--network none (fully isolated, original behavior)
  • GVisorNetworkMode::Sandbox--network sandbox (gVisor user-space network stack)
  • GVisorNetworkMode::Host--network host (share host network namespace)
Source

pub fn exec_with_oci_bundle_network( &self, container_id: &str, bundle: &OciBundle, network_mode: GVisorNetworkMode, rootless: bool, platform: GVisorPlatform, ) -> Result<()>

Execute using gVisor with an OCI bundle and explicit network mode.

When rootless is true, the OCI spec is expected to carry explicit user namespace mappings. In that mode we do not pass runsc’s CLI --rootless flag, because gVisor documents that flag as the runsc do-oriented path rather than the OCI run path. We still skip runsc’s internal cgroup configuration because Nucleus already manages cgroups externally and unprivileged callers cannot configure them directly.

Source

pub fn is_available() -> bool

Check if gVisor is available on this system

Source

pub fn version(&self) -> Result<String>

Get runsc version

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more