OS-Verteilung eines Docker-Images bestimmen

Ich muss den Namen der Betriebssystemverteilung für jedes Docker-Image ermitteln. Ich kann @ taggubuntu: Neueste wie image1: aktuelles, aber ich sollte in der Lage sein, die Distributionsinformationen von image1: spätestens beim Start abzurufen.

Um dies zu erreichen, habe ich den folgenden Befehl verwendet, um die Betriebssystemversion zu bestimmen:

$ docker tag ubuntu image1
$
$ docker run -it image1 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$

Dies hängt jedoch davon ab, ob das Bild @ ha python2 oder python3 drin. Es schlägt fehl für Ubuntu: 12.04 und ich muss dort Python2 verwenden.

$ docker run -it ubuntu /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
('Ubuntu', '14.04', 'trusty')
$
$ docker run -it ubuntu:12.04 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python3 test.py"
/bin/sh: 1: python3: not found
$
$ docker run -it ubuntu:12.04 /bin/sh -c "echo import platform > test.py; echo print\(platform.dist\(\)\) >> test.py; python2 test.py"
('Ubuntu', '12.04', 'precise')
$ 

Q1. Gibt es eine Möglichkeit, dasselbe zu erreichen, ohne zu wissen, welche Version von Python in einem bestimmten Image enthalten ist?

HINWEIS: Ziel ist es, das Basis-Image zu bestimmen, mit dem dieses Image erstellt wurde. Ich habe keinen Zugriff auf die Docker-Datei, mit der dieses Image erstellt wurde.

Q2. Es gibt einen anderen Ansatz zur Verwendung von Zwischenpunkten. Ich kann mit Dockerfile ein separates Bild vom aktuellen Bild erstellen. Oder ich kann beim Erstellen eines Containers einen Eintrittspunkt in cmdline angeben, aber das Skript muss innerhalb des Containers verfügbar sein. Ich vermute, dass ich bei der Verwendung von cmdline möglicherweise gemeinsamen Speicherplatz benötige. Gibt es einen besseren Weg, dies zu erreichen? Irgendwelche Hinweise wären wirklich hilfreich.

Vielen Dank

Antworten auf die Frage(6)

Ihre Antwort auf die Frage