En esta entrada veremos cómo crear un panel de Docker con PowerShell Universal.
Docker Desktop
En esta entrada usaremos Docker Desktop en Windows. Docker Desktop ofrece una excelente interfaz para contenerizar aplicaciones. Es útil en desarrollo y en implementación para garantizar entornos aislados y repetibles. Incluso ofrecemos PowerShell Universal como imagen Docker.
Cuando Docker Desktop esté en ejecución, tendrá acceso a la herramienta de línea de comandos docker para gestionar su entorno Docker.
docker --version
Docker version 20.10.8, build 3967b7d
Integrar Docker con PowerShell
La herramienta de línea de comandos docker devuelve por defecto cadenas en stdout. Puede cambiar el formato de la salida de Docker con el parámetro --format y una plantilla Go. La forma más sencilla de integrarla con PowerShell es devolver la salida de Docker como JSON y luego usar ConvertFrom-Json.
Por ejemplo, para devolver todas las imágenes como PSCustomObject de PowerShell, use lo siguiente:
docker image ls --format "{{json .}}" | ConvertFrom-Json | Format-Table
Containers CreatedAt CreatedSince Digest ID Repository SharedSize Size Tag UniqueSize
---------- --------- ------------ ------ -- ---------- ---------- ---- --- ----------
N/A 2021-10-20 13:25:50 -0600 MDT 13 days ago <none> 374e376c25d4 azuresdk/autorest N/A 238MB latest N/A
N/A 2021-10-08 08:25:36 -0600 MDT 3 weeks ago <none> 0a862dc7ed99 owasp/zap2docker-stable N/A 1.71GB latest N/A
N/A 2021-10-02 15:46:50 -0600 MDT 4 weeks ago <none> ee5bfd8960ab ironmansoftware/universal N/A 757MB 2.3.2-ubunutu-18.04-ps-7.1.4 N/A
N/A 2021-10-02 15:46:50 -0600 MDT 4 weeks ago <none> ee5bfd8960ab ironmansoftware/universal N/A 757MB latest N/A
N/A 2021-09-17 09:16:16 -0600 MDT 6 weeks ago 40bd2c207cdf ironmansoftware/universal N/A 754MB <none> N/A
N/A 2021-08-09 23:05:16 -0600 MDT 2 months ago 236e5fcd27d1 ironmansoftware/universal N/A 695MB <none> N/A
N/A 2021-08-09 23:04:09 -0600 MDT 2 months ago <none> 78fc0ed5b396 ironmansoftware/universal N/A 719MB 2.2.1-ubunutu-18.04-ps-7.1.2 N/A
N/A 2021-06-03 10:09:48 -0600 MDT 5 months ago <none> 273e64b77c98 universal N/A 876MB latest N/A
N/A 2021-06-03 10:05:04 -0600 MDT 5 months ago <none> afb49237b478 <none> N/A 852MB <none> N/A
N/A 2021-06-01 22:13:47 -0600 MDT 5 months ago 07316af2d12f ironmansoftware/universal N/A 851MB <none> N/A
N/A 2021-05-26 10:44:30 -0600 MDT 5 months ago <none> 82c9f30a63de mcr.microsoft.com/powershell N/A 291MB lts-ubuntu-18.04 N/A
N/A 2021-05-17 06:33:15 -0600 MDT 5 months ago bb1e31317f90 ironmansoftware/universal N/A 878MB <none> N/A
N/A 2021-02-19 17:18:04 -0700 MST 8 months ago <none> 3fc91f7b6ea3 ironmansoftware/universal N/A 917MB 1.5.13-ubunutu-18.04-ps-7.1.2 N/A
N/A 2021-02-19 17:08:44 -0700 MST 8 months ago <none> ca88ddc60155 <none> N/A 918MB <none> N/A
N/A 2021-02-19 17:02:38 -0700 MST 8 months ago <none> 6d92c5633b00 <none> N/A 1.11GB <none> N/A
N/A 2021-02-19 16:55:27 -0700 MST 8 months ago <none> 0ffeef9f2786 <none> N/A 1.08GB <none> N/A
N/A 2021-02-19 08:51:37 -0700 MST 8 months ago <none> b0d7382eb3ea <none> N/A 539MB <none> N/A
Crear scripts en PowerShell Universal
A continuación, crearemos scripts en PowerShell Universal para devolver todo tipo de información sobre nuestro entorno Docker. Cada script llamará a un comando Docker distinto y devolverá la información como PSCustomObject.
Para crear un script en PowerShell Universal, haga clic en Automation > Scripts > Create New Script.
Contenedores Docker
El siguiente script enumera todos los contenedores Docker como PSCustomObject.
docker ps --format "{{json .}}" | ConvertFrom-Json
Contextos Docker
El siguiente script enumera todos los contextos Docker como PSCustomObject.
docker context list --format "{{json .}}" | ConvertFrom-Json
Uso del espacio en disco de Docker
El siguiente script enumera el uso del espacio en disco de Docker como PSCustomObject.
docker system df --format "{{json .}}" | ConvertFrom-Json
Imágenes Docker
El siguiente script enumera todas las imágenes Docker como PSCustomObject.
docker image ls --format "{{json .}}" | ConvertFrom-Json
Redes Docker
El siguiente script enumera todas las redes Docker como PSCustomObject.
docker network ls --format "{{json .}}" | ConvertFrom-Json
Información del sistema Docker
El siguiente script enumera la información del sistema Docker como PSCustomObject.
docker system info --format "{{json .}}" | ConvertFrom-Json
Volúmenes Docker
El siguiente script enumera todos los volúmenes Docker como PSCustomObject.
docker volume ls --format "{{json .}}" | ConvertFrom-Json
Una vez creados todos los scripts, deberá ejecutarlos al menos una vez para ver los datos en el siguiente paso.
Crear una página de PowerShell Universal
A continuación, crearemos páginas para cada uno de los scripts. Las páginas mostrarán la salida de la última ejecución del trabajo en una tabla.
Haga clic en User Interfaces > Pages > Create New Page para crear una página nueva. Puede empezar por Images.

Cuando se haya creado la página, puede editarla haciendo clic en View y luego en Edit.

Una vez en modo de edición, haga clic en Toolbox, Data Display y Table. Seleccione el origen de datos del script Images.ps1.

Tras seleccionar el origen de datos y hacer clic en Ok, puede cambiar el tamaño del componente y ver los datos de la tabla. Guarde los datos y la página se volverá a cargar con los datos de la tabla mostrados.

Puede repetir este proceso para cada uno de los scripts.

Para personalizar los iconos de la página, en modo de edición, haga clic en Properties y seleccione el Icon.
Cuando haya configurado cada página, puede recorrer la navegación para ver todos sus datos de Docker.

Personalizar columnas
Algunas tablas, System Info en particular, incluyen muchas columnas y es posible que quiera reducir la cantidad de datos mostrados. Al editar la tabla, puede personalizar el nombre y las propiedades de las columnas.

Plantilla Docker de PowerShell Universal
Esta entrada se ha exportado como plantilla Docker de PowerShell Universal. Puede descargarla desde nuestra biblioteca de plantillas.
¿Quiere probarlo usted mismo? Obtenga PowerShell Universal en el centro de descargas.

Adam Driscoll