Public/Get-Container.ps1
|
Register-ArgumentCompleter -CommandName Get-DockerContainer -ParameterName Name -ScriptBlock $ContainerNameCompleter function Get-Container { <# .SYNOPSIS Get docker container .DESCRIPTION Returns references to docker containers of a docker service. It can be filtered by name and status. Wraps the command `docker ps`. .LINK https://docs.docker.com/engine/reference/commandline/ps/ .OUTPUTS Container: It returns a `Container` object for each container matching the parameters. .EXAMPLE PS C:\> New-DockerContainer -Image 'microsoft/nanoserver' -Name 'mycontainer' | Out-Null PS C:\> Get-DockerContainer -Name 'mycontainer' Image : microsoft/nanoserver Ports : Command : "c:\\windows\\system32\\cmd.exe" Created : 13 seconds ago Name : mycontainer ContainerID : 1c3bd73d25552b41a677a99a15a9326ba72123096f9e10c3d36f72fb90e57f16 Status : Exited (0) 5 seconds ago #> [CmdletBinding()] param ( # Specifies if only running containers should be returned. [Parameter(Mandatory=$false)] [switch] $Running, # Specifies if only the latest created container should be returned. [Parameter(Mandatory=$false)] [switch] $Latest, # Specifies if only the container with the given name should be returned. [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [string] $Name, # Specifies the number of seconds to wait for the command to finish. [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [int] $Timeout = 1 ) $arguments = New-Object System.Collections.ArrayList if ( $Running -eq $false ) { $arguments.Add( '--all' ) | Out-Null } if ( $Latest ) { $arguments.Add( '--latest' ) | Out-Null } if ( $Name ) { $arguments.Add( "--filter name=$Name" ) | Out-Null } $arguments.Add( '--no-trunc' ) | Out-Null $arguments.Add( '--format="{{json .}}"' ) | Out-Null Invoke-ClientCommand 'ps', $arguments ` -Timeout $Timeout ` -JsonOutput | ForEach-Object { New-Object -TypeName Container -Property @{ Command = $_.Command CreatedAt = $_.CreatedAt Id = $_.ID Image = $_.Image Labels = $_.Labels -split ',' LocalVolumes = $_.LocalVolumes -split ',' Mounts = $_.Mounts -split ',' Names = $_.Names -split ',' Networks = $_.Networks -split ',' Ports = $_.Ports RunningFor = $_.RunningFor Size = $_.Size Status = $_.Status } | Write-Output } | Write-Output } |