Public/Remove-Container.ps1

Register-ArgumentCompleter -CommandName Remove-DockerContainer -ParameterName Name -ScriptBlock $ContainerNameCompleter

function Remove-Container {

    <#

    .SYNOPSIS
    Remove container

    .DESCRIPTION
    Removes a docker container from the service.
    Wraps the command `docker rm`.

    .LINK
    https://docs.docker.com/engine/reference/commandline/rm/

    .PARAMETER Name
    Specifies the name of the container, that should be removed.

    .PARAMETER Force
    Specifies if the container should be stopped before removal.

    .PARAMETER Timeout
    Specifies the number of seconds to wait for the command to finish.

    .PARAMETER StopTimeout
    Specifies the timeout of the docker client command for the stop operation.

    .EXAMPLE
    PS C:\> New-DockerContainer -Image 'microsoft/nanoserver' -Name 'mycontainer' | Out-Null
    PS C:\> Remove-DockerContainer -Name 'mycontainer'

    .EXAMPLE
    PS C:\> $container = New-DockerContainer -Image 'microsoft/nanoserver'
    PS C:\> $container | Remove-DockerContainer

    #>


    [CmdletBinding()]
    param (
        [Parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true )]
        [ValidateNotNullOrEmpty()]
        [string] $Name,

        [Parameter( Mandatory = $false )]
        [switch] $Force,

        [Parameter( Mandatory = $false )]
        [int] $Timeout = 10,

        [Parameter( Mandatory = $false )]
        [int] $StopTimeout = 10
    )

    process {

        if ( $Force ) {
            Stop-Container -Name $Name -Timeout $StopTimeout
        }

        Invoke-ClientCommand 'rm', $Name -Timeout $Timeout
        Write-Verbose "Docker container removed."

    }
}