Struct DockerRegistry

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

DockerRegistry is a client for interacting with Docker’s Registry HTTP API v2. It handles authentication, image manifest retrieval, and blob fetching.

See OCI distribution specification for more details on the manifest schema

See Docker Registry API for more details on the API

Implementations§

Source§

impl DockerRegistry

Source

pub fn get_client(&self) -> &ClientWithMiddleware

The HTTP client used to make requests to the Docker registry.

Source

pub fn get_layer_download_dir(&self) -> &PathBuf

The directory where image layers are downloaded.

Source

pub fn get_oci_db(&self) -> &Pool<Sqlite>

The database where image configurations, indexes, and manifests are stored.

Source§

impl DockerRegistry

Source

pub fn set_client(&mut self, val: ClientWithMiddleware) -> &mut Self

The HTTP client used to make requests to the Docker registry.

Source

pub fn set_layer_download_dir(&mut self, val: PathBuf) -> &mut Self

The directory where image layers are downloaded.

Source

pub fn set_oci_db(&mut self, val: Pool<Sqlite>) -> &mut Self

The database where image configurations, indexes, and manifests are stored.

Source§

impl DockerRegistry

Source

pub async fn new( layer_download_dir: impl Into<PathBuf>, oci_db_path: impl AsRef<Path>, ) -> MicrosandboxResult<Self>

Creates a new Docker Registry client with the specified image download path and OCI database path.

§Arguments
  • layer_download_dir - The directory where downloaded image layers will be stored
  • oci_db_path - The path to the SQLite database that stores OCI-related metadata
Source

pub async fn download_image_blob( &self, repository: &str, digest: &Digest, download_size: u64, ) -> MicrosandboxResult<bool>

Downloads a blob from the registry, supports download resumption if the file already partially exists.

Returns a tuple (MicrosandboxResult<()>, bool) where the boolean indicates whether a download actually occurred (true) or was skipped because the file already exists (false).

Trait Implementations§

Source§

impl Debug for DockerRegistry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl OciRegistryPull for DockerRegistry

Source§

fn pull_image<'life0, 'life1, 'async_trait>( &'life0 self, repository: &'life1 str, selector: ReferenceSelector, ) -> Pin<Box<dyn Future<Output = MicrosandboxResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Pulls an OCI image from the specified repository. This includes downloading the image manifest, fetching the image configuration, and downloading the image layers. Read more
Source§

fn fetch_index<'life0, 'life1, 'async_trait>( &'life0 self, repository: &'life1 str, selector: ReferenceSelector, ) -> Pin<Box<dyn Future<Output = MicrosandboxResult<ImageIndex>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Fetches the image index (manifest list) for multi-platform support. Retrieves the appropriate manifest for the target platform. Read more
Source§

fn fetch_manifest<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, repository: &'life1 str, digest: &'life2 Digest, ) -> Pin<Box<dyn Future<Output = MicrosandboxResult<ImageManifest>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Fetches an image manifest by digest. Provides the list of layers and configurations for an image.
Source§

fn fetch_config<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, repository: &'life1 str, digest: &'life2 Digest, ) -> Pin<Box<dyn Future<Output = MicrosandboxResult<ImageConfiguration>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Fetches the image configuration by digest. Returns metadata about the image, such as environment variables and entrypoint.
Source§

fn fetch_image_blob<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, repository: &'life1 str, digest: &'life2 Digest, range: impl 'async_trait + RangeBounds<u64> + Send, ) -> Pin<Box<dyn Future<Output = MicrosandboxResult<BoxStream<'static, MicrosandboxResult<Bytes>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Fetches a image blob from the registry by its digest. This method returns a stream for efficient processing of large blobs. Read more

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,