I dette indlæg ser vi på, hvordan du bygger et Docker-dashboard med PowerShell Universal.
Docker Desktop
Vi bruger Docker Desktop på Windows i dette indlæg. Docker Desktop giver en fremragende brugerflade til at lægge applikationer i containere. Det er nyttigt både i udvikling og ved udrulning, så du har isolerede og gentagelige miljøer. Vi stiller endda PowerShell Universal til rådighed som et Docker-image.
Når Docker Desktop kører, har du adgang til kommandolinjeværktøjet docker til at administrere dit Docker-miljø.
docker --version
Docker version 20.10.8, build 3967b7d
Integration af Docker med PowerShell
Kommandolinjeværktøjet docker returnerer som standard stdout-strenge. Du kan ændre formatet på Docker-outputtet med parameteren --format og en Go-skabelon. Den nemmeste måde at integrere med PowerShell på er at returnere Docker-outputtet som JSON og derefter bruge ConvertFrom-Json.
Hvis du for eksempel vil returnere alle images som PowerShell-PSCustomObjects, skal du bruge følgende:
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
Oprettelse af scripts i PowerShell Universal
Dernæst opretter vi scripts i PowerShell Universal, som returnerer alle mulige oplysninger om vores Docker-miljø. Hvert script kalder en forskellig Docker-kommando og returnerer oplysningerne som PSCustomObjects.
For at oprette et script i PowerShell Universal skal du klikke på Automation > Scripts > Create New Script.
Docker-containere
Følgende script viser alle Docker-containere som PSCustomObjects.
docker ps --format "{{json .}}" | ConvertFrom-Json
Docker-kontekster
Følgende script viser alle Docker-kontekster som PSCustomObjects.
docker context list --format "{{json .}}" | ConvertFrom-Json
Docker-diskforbrug
Følgende script viser Docker-diskforbruget som et PSCustomObject.
docker system df --format "{{json .}}" | ConvertFrom-Json
Docker-images
Følgende script viser alle Docker-images som et PSCustomObject.
docker image ls --format "{{json .}}" | ConvertFrom-Json
Docker-netværk
Følgende script viser alle Docker-netværk som et PSCustomObject.
docker network ls --format "{{json .}}" | ConvertFrom-Json
Docker-systemoplysninger
Følgende script viser Docker-systemoplysningerne som et PSCustomObject.
docker system info --format "{{json .}}" | ConvertFrom-Json
Docker-volumes
Følgende script viser alle Docker-volumes som et PSCustomObject.
docker volume ls --format "{{json .}}" | ConvertFrom-Json
Når alle scripts er oprettet, skal du køre dem alle mindst én gang for at se dataene i næste trin.
Oprettelse af en side i PowerShell Universal
Dernæst opretter vi sider til hvert af scriptene. Siderne viser outputtet fra den seneste jobkørsel i en tabel.
Klik på User Interfaces > Pages > Create New Page for at oprette en ny side. Du kan starte med Images.

Når siden er oprettet, kan du redigere den ved at klikke på View og derefter på Edit.

Når du er i redigeringstilstand, skal du klikke på Toolbox, Data Display og Table. Vælg scriptdatakilden Images.ps1.

Når du har valgt datakilden og klikket på Ok, kan du ændre størrelsen på komponenten og se tabeldataene. Gem dataene, så genindlæses siden med tabeldataene vist.

Du kan gentage processen for hvert af scriptene.

For at tilpasse ikonerne på siden skal du i redigeringstilstand klikke på Properties og vælge Icon.
Når du har konfigureret hver side, kan du klikke dig gennem navigationen og se alle dine Docker-data.

Tilpasning af kolonner
Nogle tabeller, især System Info, har mange kolonner, og du vil måske vise færre data. Når du redigerer tabellen, kan du tilpasse kolonnenavnet og egenskaberne.

Docker-skabelon til PowerShell Universal
Dette indlæg er eksporteret som en Docker-skabelon til PowerShell Universal. Du kan downloade den fra vores skabelonbibliotek.
Vil du prøve det selv? Hent PowerShell Universal i downloadcenteret.

Adam Driscoll