MAIN MENU
Blog di Devolutions

Annunci, aggiornamenti e approfondimenti di Devolutions.

PowerShell Universal Building Docker Dashboard for the Devolutions blog.

Creare una dashboard Docker con PowerShell Universal

Questa guida mostra come integrare Docker Desktop con PowerShell tramite output JSON, creare script di PowerShell Universal per container, immagini e altro, quindi collegare ogni script alle Pages con tabelle per una dashboard Docker completa.

In questo articolo vedremo come creare una dashboard Docker con PowerShell Universal.

Docker Desktop

In questo articolo utilizzeremo Docker Desktop su Windows. Docker Desktop offre un’ottima interfaccia per containerizzare le applicazioni. È utile sia in fase di sviluppo che di distribuzione per garantire ambienti isolati e riproducibili. Offriamo persino PowerShell Universal come immagine Docker.

Una volta avviato Docker Desktop, avrà accesso allo strumento a riga di comando docker per gestire il proprio ambiente Docker.

docker --version
Docker version 20.10.8, build 3967b7d

Integrare Docker con PowerShell

Lo strumento a riga di comando docker restituisce per impostazione predefinita stringhe stdout. È possibile modificare il formato dell’output di Docker utilizzando il parametro --format e specificando un template Go. Il modo più semplice per integrarlo con PowerShell è restituire l’output di Docker come JSON e poi utilizzare ConvertFrom-Json.

Ad esempio, per restituire tutte le immagini come PSCustomObject di PowerShell, utilizzi quanto segue:

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

Creare script in PowerShell Universal

Successivamente, creeremo degli script in PowerShell Universal per restituire ogni tipo di informazione sul nostro ambiente Docker. Ogni script richiamerà un diverso comando Docker e restituirà informazioni come PSCustomObject.

Per creare uno script in PowerShell Universal, faccia clic su Automation > Scripts > Create New Script.

Container Docker

Lo script seguente elenca tutti i container Docker come PSCustomObject.

docker ps --format "{{json .}}" | ConvertFrom-Json

Contesti Docker

Lo script seguente elenca tutti i contesti Docker come PSCustomObject.

docker context list --format "{{json .}}" | ConvertFrom-Json

Utilizzo del disco Docker

Lo script seguente elenca l’utilizzo del disco di Docker come PSCustomObject.

docker system df --format "{{json .}}" | ConvertFrom-Json

Immagini Docker

Lo script seguente elenca tutte le immagini Docker come PSCustomObject.

docker image ls --format "{{json .}}" | ConvertFrom-Json

Reti Docker

Lo script seguente elenca tutte le reti Docker come PSCustomObject.

docker network ls --format "{{json .}}" | ConvertFrom-Json

Informazioni di sistema Docker

Lo script seguente elenca le informazioni di sistema di Docker come PSCustomObject.

docker system info --format "{{json .}}" | ConvertFrom-Json

Volumi Docker

Lo script seguente elenca tutti i volumi Docker come PSCustomObject.

docker volume ls --format "{{json .}}" | ConvertFrom-Json

Una volta creati tutti gli script, dovrà eseguirli tutti almeno una volta per visualizzare i dati nel passaggio successivo.

Creare una pagina in PowerShell Universal

Successivamente, creeremo delle pagine per ciascuno degli script. Le pagine mostreranno l’output dell’ultima esecuzione del job in una tabella.

Faccia clic su User Interfaces > Pages > Create New Page per creare una nuova pagina. Può iniziare con Images.

PowerShell Universal Pages list showing Docker-related page entries.

Una volta creata la pagina, può modificarla facendo clic su View e poi su Edit.

PowerShell Universal page editor open on the Docker Images page.

Una volta in modalità di modifica, faccia clic su Toolbox, Data Display e Table. Selezioni lo script Images.ps1 come origine dati.

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

Dopo aver selezionato l’origine dati e fatto clic su Ok, può ridimensionare il componente e visualizzare i dati della tabella. Salvi i dati e la pagina si ricaricherà mostrando i dati della tabella.

PowerShell Universal table showing Docker image repository names and sizes.

Può ripetere questo processo per ciascuno degli script.

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

Per personalizzare le icone della pagina, in modalità di modifica, faccia clic su Properties e selezioni Icon.

Una volta configurata ogni pagina, può navigare attraverso il menu per visualizzare tutti i dati Docker.

PowerShell Universal Docker dashboard showing containers table and navigation.

Personalizzare le colonne

Alcune tabelle, in particolare System Info, includono molte colonne e potrebbe voler ridurre la quantità di dati mostrati. Durante la modifica della tabella, può personalizzare il nome e le proprietà delle colonne.

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

Template Docker per PowerShell Universal

Questo articolo è stato esportato come template Docker per PowerShell Universal. Può scaricarlo dalla nostra libreria di template.

Vuole provarlo di persona? Scarichi PowerShell Universal dal nostro centro download.