MAIN MENU
Blog de Devolutions

Anuncios, actualizaciones y análisis de Devolutions.

PowerShell Universal Building Docker Dashboard for the Devolutions blog.

Crear un panel de Docker con PowerShell Universal

Esta guía muestra cómo integrar Docker Desktop con PowerShell mediante salida JSON, crear scripts de PowerShell Universal para contenedores, imágenes y más, y conectar cada script a Pages con tablas para un panel de Docker completo.

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.

PowerShell Universal Pages list showing Docker-related page entries.

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

PowerShell Universal page editor open on the Docker Images page.

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

PowerShell Universal table component selecting Images.ps1 as the data source.

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.

PowerShell Universal table showing Docker image repository names and sizes.

Puede repetir este proceso para cada uno de los scripts.

PowerShell Universal navigation listing Docker Images, Containers, and related pages.

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.

PowerShell Universal Docker dashboard showing containers table and navigation.

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.

PowerShell Universal table column editor with custom names and property settings.

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.