Hovedmenu
Devolutions-blog

Nyheder, opdateringer og indsigter fra Devolutions.

PowerShell Universal Building Docker Dashboard for the Devolutions blog.

Byg et Docker-dashboard med PowerShell Universal

Denne gennemgang viser, hvordan du integrerer Docker Desktop med PowerShell ved hjælp af JSON-output, opretter scripts i PowerShell Universal til containere, images og mere og derefter kobler hvert script til Pages med tabeller, så du får et komplet Docker-dashboard.

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.

Liste over Pages i PowerShell Universal med Docker-relaterede sider.

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

Sideeditoren i PowerShell Universal åben på siden Docker Images.

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

Tabelkomponent i PowerShell Universal, der vælger Images.ps1 som datakilde.

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.

Tabel i PowerShell Universal med navne og størrelser på Docker-image-repositorier.

Du kan gentage processen for hvert af scriptene.

Navigation i PowerShell Universal med Docker Images, Containers og relaterede sider.

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.

Docker-dashboard i PowerShell Universal med containertabel og navigation.

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.

Kolonneeditor til tabeller i PowerShell Universal med brugerdefinerede navne og egenskaber.

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.