JSON

Syntax JSON

Bei der Analyse von Images und Containern hilft das docker [...] inspect Kommando und es ergeben sich JSON Codes. Die Ausgaben entstehen also in Form von JSON Dateien (JSON Link Wikipdia).

Auch die Auflistungen von Images oder Containern kann man in JSON Formaten erzeugen. Es ergeben sich also divers Kontakte mit diesem Datenformat.

JSON Beispiel
{
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "555-555-1234"
    },
    {
      "type": "mobile",
      "number": "555-555-5678"
    }
  ]
}

Bitte denken Sie beim Bearbeiten von JSON-Dateien an folgende Umsetzungen:

  • Kommas und Hochkommas sauber setzen - kein Komma mehr hinter dem letzten Listen- oder Dictionary-Element

  • Saubere eckige, geschweifte Klammern

  • Keine Kommentare

Im Seminar folgen praktische Tests und Empfehlungen für saubere Ausgaben, Formatierungen und Filterungen.

Tool jq und yq

Die Tools müssen ggf. noch nachinstalliert werden: z.B.

sudo apt install jq yq)

Das kann man auch für die verbesserte Ausgabe von manuellen HTTP-RESTful-Api Docker-Test mit Webbrowser curl nutzen:

curl -s --unix-socket /var/run/docker.sock http://localhost/images/json | jq

Anm./Erinnerung: die Nutzung eines Unix-Sockets kann sicherheitstechnisch einen Nachteil darstellen.

Beispiel: (Kurzerläuterung: JSON als Array interpretieren) - zur weiteren Hilfe gerne auch grafische Werkzeuge wie JSONCrack (s.u.)

Image Inspektion - nur Info zum Creation Date/Time ausgeben:

docker image inspect hello-world:latest | jq '.[0].Created'

Links zu Tool jq und yq:

Hinweis

JSON-Dokumente sind eine gültige Untermenge von YAML. Jedes JSON-Dokument ist auch ein gültiges YAML-Dokument.

JSON CRACK

Aktuell (2024) finden sich bei einer Online-Recherche zu Visualisierungstools rund um JSON viele Werkzeuge und da habe ich noch nicht mal die AI-Spielereien bedacht. Ich habe vor Jahren JSON CRACK entdeckt und schätzen gelernt.

Online Editor zu JSON CRACK: https://jsoncrack.com/editor

JSON CRACK Editor - Online oder Offline

JSON CRACK Editor - Online oder Offline

Mittlerweile gibt es auch eine VS Code Extension jsoncrack (VS Code Marketplace Link Jsoncrack).

Go Templates

Die Ausgabe von Docker Kommandos ist auch über Go-Templates möglich und ergeben auf Wunsch JSON Formate.

docker image inspect alpine:latest --format '{{.Config.Cmd}}'
[/bin/sh]

docker image inspect alpine:latest --format '{{json .Config.Env}}' | jq
[
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
]

# weitere Beispiele
docker inspect -f "{{.State.Status}}" mariadb-test5
docker inspect -f "{{.State.FinishedAt}}" mariadb-test5

Oder aber wir optimieren die Ausgabetabelle eines Docker-Befehls über formatierte / tabellarische Ausgaben mit Schalter --format:

docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Labels}}"

Besondere Erwähnung neben dem Format table sollte hier das Format json erfahren, was uns wieder zurück zum Tool jq bringt!