PushCommand

Struct PushCommand 

Source
pub struct PushCommand {
    pub executor: CommandExecutor,
    /* private fields */
}
Expand description

Docker Push Command Builder

Implements the docker push command for uploading images to registries.

§Docker Push Overview

The push command uploads images from the local Docker daemon to Docker registries (like Docker Hub, AWS ECR, or private registries). It supports:

  • Single image push by name and tag
  • All tags push for a repository
  • Platform-specific manifest pushing
  • Quiet mode for minimal output
  • Content trust signing control

§Image Naming

Images can be specified in several formats:

  • image:tag - Image with specific tag
  • registry/image:tag - Specific registry
  • registry:port/image:tag - Custom registry port
  • namespace/image:tag - Namespaced image (e.g., Docker Hub organizations)

§Registry Authentication

Push operations typically require authentication. Use docker login first or configure registry credentials through Docker configuration files.

§Examples

use docker_wrapper::PushCommand;
use docker_wrapper::DockerCommand;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Push to Docker Hub
    let output = PushCommand::new("username/myapp:v1.0")
        .execute()
        .await?;

    println!("Push success: {}", output.success);
    Ok(())
}

Fields§

§executor: CommandExecutor

Command executor for handling raw arguments and execution

Implementations§

Source§

impl PushCommand

Source

pub fn new<S: Into<String>>(image: S) -> Self

Create a new PushCommand instance

§Arguments
  • image - The image name to push (e.g., “myapp:latest”, “registry.com/myapp:v1.0”)
§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp:latest");
Source

pub fn all_tags(self) -> Self

Push all tags of an image to the repository

When enabled, pushes all available tags for the specified image repository. The image name should not include a specific tag when using this option.

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myregistry.com/myapp")
    .all_tags();
Source

pub fn disable_content_trust(self) -> Self

Skip image signing (disable content trust)

By default, Docker may sign images when content trust is enabled. This option disables that signing process.

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp:latest")
    .disable_content_trust();
Source

pub fn platform<S: Into<String>>(self, platform: S) -> Self

Push a platform-specific manifest as a single-platform image

Pushes only the specified platform variant of a multi-platform image. The image index won’t be pushed, meaning other manifests including attestations won’t be preserved.

Platform format: os[/arch[/variant]]

Common platform values:

  • linux/amd64 - 64-bit Intel/AMD Linux
  • linux/arm64 - 64-bit ARM Linux
  • linux/arm/v7 - 32-bit ARM Linux
  • windows/amd64 - 64-bit Windows
§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp:latest")
    .platform("linux/amd64");
Source

pub fn quiet(self) -> Self

Suppress verbose output

Reduces the amount of output during the push operation.

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp:latest")
    .quiet();
Source

pub fn get_image(&self) -> &str

Get the image name

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp:latest");
assert_eq!(push_cmd.get_image(), "myapp:latest");
Source

pub fn is_all_tags(&self) -> bool

Check if all tags mode is enabled

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp").all_tags();
assert!(push_cmd.is_all_tags());
Source

pub fn is_quiet(&self) -> bool

Check if quiet mode is enabled

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp").quiet();
assert!(push_cmd.is_quiet());
Source

pub fn get_platform(&self) -> Option<&str>

Get the platform if set

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp").platform("linux/arm64");
assert_eq!(push_cmd.get_platform(), Some("linux/arm64"));
Source

pub fn is_content_trust_disabled(&self) -> bool

Check if content trust is disabled

§Examples
use docker_wrapper::PushCommand;

let push_cmd = PushCommand::new("myapp").disable_content_trust();
assert!(push_cmd.is_content_trust_disabled());
Source

pub fn get_executor(&self) -> &CommandExecutor

Get a reference to the command executor

Source

pub fn get_executor_mut(&mut self) -> &mut CommandExecutor

Get a mutable reference to the command executor

Trait Implementations§

Source§

impl Clone for PushCommand

Source§

fn clone(&self) -> PushCommand

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PushCommand

Source§

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

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

impl Default for PushCommand

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl DockerCommand for PushCommand

Source§

type Output = CommandOutput

The output type this command produces
Source§

fn get_executor(&self) -> &CommandExecutor

Get the command executor for extensibility
Source§

fn get_executor_mut(&mut self) -> &mut CommandExecutor

Get mutable command executor for extensibility
Source§

fn build_command_args(&self) -> Vec<String>

Build the complete command arguments including subcommands
Source§

fn execute<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Self::Output>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Execute the command and return the typed output
Source§

fn execute_command<'life0, 'async_trait>( &'life0 self, command_args: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<CommandOutput>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Helper method to execute the command with proper error handling
Source§

fn arg<S: AsRef<OsStr>>(&mut self, arg: S) -> &mut Self

Add a raw argument to the command (escape hatch)
Source§

fn args<I, S>(&mut self, args: I) -> &mut Self
where I: IntoIterator<Item = S>, S: AsRef<OsStr>,

Add multiple raw arguments to the command (escape hatch)
Source§

fn flag(&mut self, flag: &str) -> &mut Self

Add a flag option (e.g., –detach, –rm)
Source§

fn option(&mut self, key: &str, value: &str) -> &mut Self

Add a key-value option (e.g., –name value, –env key=value)

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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
Source§

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