pub struct DockerSandbox { /* private fields */ }Expand description
Docker/Podman container sandbox
Implementations§
Source§impl DockerSandbox
impl DockerSandbox
Sourcepub fn new(name: &str, runtime: ContainerRuntime) -> Self
pub fn new(name: &str, runtime: ContainerRuntime) -> Self
Create a new Docker sandbox with the specified runtime
Sourcepub fn new_persistent(name: &str, runtime: ContainerRuntime) -> Self
pub fn new_persistent(name: &str, runtime: ContainerRuntime) -> Self
Create a persistent Docker sandbox (won’t be cleaned up in Drop)
Sourcepub fn set_persistent(&mut self, persistent: bool)
pub fn set_persistent(&mut self, persistent: bool)
Mark this sandbox as persistent (won’t be cleaned up in Drop)
Sourcepub fn with_detected_runtime(name: &str) -> Result<Self>
pub fn with_detected_runtime(name: &str) -> Result<Self>
Create a new Docker sandbox with auto-detected runtime
Source§impl DockerSandbox
impl DockerSandbox
Sourcepub fn run_ephemeral_cmd(
runtime: ContainerRuntime,
image: &str,
cmd: &[String],
config: &SandboxConfig,
) -> Result<ExecResult>
pub fn run_ephemeral_cmd( runtime: ContainerRuntime, image: &str, cmd: &[String], config: &SandboxConfig, ) -> Result<ExecResult>
Run a command in a temporary container using docker run --rm
This is faster than create→start→exec→stop for one-shot commands
Trait Implementations§
Source§impl Drop for DockerSandbox
impl Drop for DockerSandbox
Source§impl Sandbox for DockerSandbox
impl Sandbox for DockerSandbox
Source§fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
config: &'life1 SandboxConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
config: &'life1 SandboxConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Start the sandbox with the given configuration
Source§fn exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a command in the sandbox
Source§fn exec_with_env<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
env: &'life3 [String],
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn exec_with_env<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
env: &'life3 [String],
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a command with environment variables
Source§fn exec_with_options<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
opts: &'life3 ExecOptions,
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn exec_with_options<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 mut self,
cmd: &'life1 [&'life2 str],
opts: &'life3 ExecOptions,
) -> Pin<Box<dyn Future<Output = Result<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a command with full options (env, workdir, user)
Source§fn stop<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stop<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stop the sandbox and clean up resources
Source§fn resize<'life0, 'async_trait>(
&'life0 mut self,
vcpus: u32,
memory_mb: u64,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn resize<'life0, 'async_trait>(
&'life0 mut self,
vcpus: u32,
memory_mb: u64,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Attempt to resize sandbox resources in-place. Read more
Source§fn backend_type(&self) -> BackendType
fn backend_type(&self) -> BackendType
Get the backend type
Source§fn is_running(&self) -> bool
fn is_running(&self) -> bool
Check if the sandbox is running
Source§fn write_file_unchecked<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
content: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_file_unchecked<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
content: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Internal write implementation (no validation, called by write_file)
Source§fn read_file_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_file_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Internal read implementation (no validation, called by read_file)
Source§fn remove_file_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_file_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Internal remove implementation
Source§fn mkdir_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
recursive: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn mkdir_unchecked<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
recursive: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Internal mkdir implementation
Source§fn attach<'life0, 'life1, 'async_trait>(
&'life0 mut self,
shell: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<i32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn attach<'life0, 'life1, 'async_trait>(
&'life0 mut self,
shell: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<i32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Attach an interactive shell to the sandbox Read more
Source§fn attach_with_env<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
shell: Option<&'life1 str>,
env: &'life2 [String],
) -> Pin<Box<dyn Future<Output = Result<i32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn attach_with_env<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
shell: Option<&'life1 str>,
env: &'life2 [String],
) -> Pin<Box<dyn Future<Output = Result<i32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Attach to the sandbox with an interactive shell and environment variables Read more
Source§fn write_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
content: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
content: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Write a file to the sandbox filesystem Read more
Source§fn read_file<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_file<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read a file from the sandbox filesystem Read more
Source§fn remove_file<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_file<'life0, 'life1, 'async_trait>(
&'life0 mut self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove a file from the sandbox filesystem
Auto Trait Implementations§
impl Freeze for DockerSandbox
impl RefUnwindSafe for DockerSandbox
impl Send for DockerSandbox
impl Sync for DockerSandbox
impl Unpin for DockerSandbox
impl UnsafeUnpin for DockerSandbox
impl UnwindSafe for DockerSandbox
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more