Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Status der Docker Container Abfragen

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Status der Docker Container Abfragen

    This topic has been deleted. Only users with topic management privileges can see it.
    • David G.
      David G. last edited by

      Hallo,

      hat jemand ein Script am laufen um seine Docker Container abzufragen und um deren Status zu sehen?

      Ich nutze Portainer. Da gibt's ja eine Api.
      Nur da reichen meine Skills leider nicht (zumindest so lange Blockly kein http post kann)^^.

      Glasfaser OliverIO 2 Replies Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @David G. last edited by

        @david-g sagte in Status der Docker Container Abfragen:

        hat jemand
        um seine Docker Container abzufragen und um deren Status zu sehen?

        Ja ... , siehe hier :

        Anzeige Status Docker Container

        David G. 1 Reply Last reply Reply Quote 0
        • David G.
          David G. @Glasfaser last edited by David G.

          @glasfaser

          Danke, schaue ich mir mal an.

          Nach einer Stunde ChatGPT bin ich so weit gekommen 😅

          docker@docker:~$ docker ps -a --format '{"IMAGE":"{{.Image}}","STATUS":"{{index (split .Status " ") 0}}","LAUFZEIT":"{{if gt (len (split .Status " ")) 2}}{{index (split .Status " ") 1}} {{index (split .Status " ") 2}}{{end}}","STATUS2":"{{if gt (len (split .Status " ")) 3}}{{index (split .Status " ") 3}}{{end}}","CREATED":"{{.CreatedAt}}","NAME":"{{.Names}}"}' | sed '1s/^/[/' | sed '$s/$/]/' | awk '{ printf "%s%s", sep, $0; sep=",\n" }'
          
          [{"IMAGE":"frooodle/s-pdf:latest","STATUS":"Up","LAUFZEIT":"45 hours","STATUS2":"","CREATED":"2024-01-10 03:00:35 +0100 CET","NAME":"Stirling_PDF"},
          {"IMAGE":"jc21/nginx-proxy-manager:latest","STATUS":"Up","LAUFZEIT":"3 days","STATUS2":"","CREATED":"2024-01-08 03:01:12 +0100 CET","NAME":"nginx"},
          {"IMAGE":"linuxserver/heimdall:latest","STATUS":"Up","LAUFZEIT":"About an","STATUS2":"hour","CREATED":"2024-01-06 03:00:41 +0100 CET","NAME":"heimdall"},
          {"IMAGE":"postgres:14-alpine","STATUS":"Up","LAUFZEIT":"5 days","STATUS2":"","CREATED":"2024-01-06 03:00:35 +0100 CET","NAME":"planka_db"},
          {"IMAGE":"jc21/mariadb-aria:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-26 23:05:46 +0100 CET","NAME":"nginx_db"},
          {"IMAGE":"ghcr.io/plankanban/planka:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-21 03:00:44 +0100 CET","NAME":"planka"},
          {"IMAGE":"containrrr/watchtower","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"(healthy)","CREATED":"2023-12-13 20:15:38 +0100 CET","NAME":"WatchTower"},
          {"IMAGE":"portainer/portainer-ce:latest","STATUS":"Up","LAUFZEIT":"2 weeks","STATUS2":"","CREATED":"2023-12-13 20:01:09 +0100 CET","NAME":"portainer"}]
          
          1 Reply Last reply Reply Quote 1
          • OliverIO
            OliverIO @David G. last edited by

            @david-g

            um die frage nach der API noch zu vervollständigen hier ein javascript um den containerstatus abzufragen

            const axios = require('axios').default;
            
            
            (async ()=>{
                let domain="http://192.168.1.61:9100";
                let environment="1";
                let containerid="0726906071e2470ac11c7fc031759e59a43163c75a6932adb36be93977cdfd81";
                let token="ptr_rNn6d/Z/JcOCLA7UV0jNRLqEUiDCGHew4Dr5OCtax0g=";
                console.log(await health(domain,environment,containerid,token));
            }
            )();
            
            async function health(domain,environment,containerid,token) {
                let url = `${domain}/api/endpoints/${environment}/docker/containers/${containerid}/json`;
                try {
                    let reponse = await axios.get(url,{
                        responseType: 'json',
                        headers: {"X-API-Key":token}
                    });
                    return reponse.data.State.Health.Status=="healthy";
                } catch (error) {
                    console.error(error);
                }
            }
            
            

            für die funktion muss man ein paar parameter vorbereiten

            1. domain = die adresse eures portainers mit protokoll und port
            2. environment = meist nur 1 ihr könnt diesen wert ebenfalls aus der browseradresse des containers ablesen bspws hier ist es der nächste parameter nach #! http://192.168.1.61:9100/#!/1/docker/....., also 1
            3. containerID = diesen wert könnt ihr aus der browseradresse ablesen, wenn ihr in portainer euch den container anschaut
            4. der portainer müsst ihr euch einmalig für euren user generieren
            • oben rechts auf euren usernamen klicken
            • my account auswählen
            • im abschnitt Access tokens euch einen generieren
            • den wert sofort kopieren und im skript eintragen. ihr könnt den wert nur einmal anschauen

            das Rückgabeobjekt reponse.data in der funktion health enthält natürlich noch eine menge mehr informationen, die ihr so entsprechend auslesen könnt

            die containerid per api über den containernamen ermitteln müsste theoretisch auch funktionieren. mehr dazu in der doku https://docs.portainer.io/api/examples#list-all-containers

            Glasfaser 1 Reply Last reply Reply Quote 1
            • Glasfaser
              Glasfaser @OliverIO last edited by Glasfaser

              @oliverio sagte in Status der Docker Container Abfragen:

              um die frage nach der API noch zu vervollständigen

              Cooler Vorschlag .... kann man viel mit spielen 🙂

              zu /containers/json ,

              f9a8ebb6-ea81-4102-af87-0ebcee988488-grafik.png
              .hier ist auch die Liste dazu :

              https://docs.docker.com/engine/api/v1.41/#tag/Container/operation/ContainerInspect

              1 Reply Last reply Reply Quote 1
              • David G.
                David G. last edited by David G.

                Hier mein aktueller Stand.

                Screenshot_20240114_114728_Fully Kiosk Browser.jpg

                Beim Namen kann man sich über den Pfeil das Image anzeigen lassen.

                Beim Status falls vorhanden, noch weitere Infos. Ebenfalls über den Pfeil.

                L. Update, zeigt wann der Container zuletzt aktualisiert worden ist. So bekommt man auch mit, wenn der Dev da die Updates eingestellt hat. (Ich kümmere mich nicht selber nicht um die Updates, das macht bei mir WatchTower).

                EDIT:
                Hab die Tabelle nochmal ziemlich überarbeitet.
                Hab sie jetzt unter dem Link in meiner Signatur bereitgestellt.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                934
                Online

                31.6k
                Users

                79.4k
                Topics

                1.3m
                Posts

                3
                6
                404
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo