Programmgesteuert nach Docker-Installation suchen (sh-script)

7

Ist es möglich, per Shell-Skript zu überprüfen, ob Docker installiert ist.

Ich würde dies manuell überprüfen

sudo docker run --name hello-world-container hello-world
sudo docker rm hello-world-container

Ich möchte dies jedoch programmgesteuert überprüfen. Wenn dieser Test fehlschlägt, kann die Installationsroutine gestartet werden.

Aktualisieren

#!/bin/bash

which docker

if [ $? -eq 0 ]
then
    docker --version | grep "Docker version"
    if [ $? -eq 0 ]
    then
        echo "docker existing"
    else
        echo "install docker"
    fi
else
    echo "install docker" >&2
fi
user3142695
quelle

Antworten:

6

Sie könnten versuchen, Folgendes auszuführen:

which docker

und Testen des Exit-Codes dieses Befehls. Wenn es 0 ist (erfolgreich), können Sie Folgendes ausführen:

docker --version

und grep nach einem bekannten Namen und Versionsmuster.

IvanGoneKrazy
quelle
Ist es nicht genug zu überprüfen which docker? Warum muss ich docker --versiondanach suchen? Und wie kann ich den Exit-Code testen?
user3142695
Sie könnten sich mit dem Exit-Code des whichBefehls zufrieden geben , aber das Überprüfen der Ausgabe des docker --versionBefehls ist eine zusätzliche Sicherheit dafür, dass es sich um die dockererwartete ausführbare Datei handelt, anstatt um eine andere ausführbare Datei oder ein anderes Skript, das den Namen teilt. Beim Testen des Exit-Codes sehe ich, dass Ihre bearbeitete Frage eine Lösung enthält.
IvanGoneKrazy
Ich denke, das docker --versionwäre besser, wie Sie erklärt haben, aber ich weiß nicht, wie ich das überprüfen soll, da es sich um eine Zeichenfolge handelt, aus der ich die Versionsnummer erhalten möchte (die nicht undefiniert sein sollte).
user3142695
Sie würden ausführen docker --version | grep "Docker version". Wenn der Exit-Code lautet 0, liegt eine erfolgreiche Übereinstimmung vor, und die ausführbare Datei ist wahrscheinlich die ausführbare Docker-Datei.
IvanGoneKrazy
Oh ok. Verstehe das. Ist es möglich, beide zu einem zu kombinieren? Ich habe meinen Beitrag aktualisiert. Wie Sie sehen können, sieht mein Versuch sehr schlecht aus ... :-(
user3142695