Dies stammt aus @fallinos Antwort, mit einigen Anpassungen und Vereinfachungen durch Verwendung der Ausgabeformatoption für docker history. Da macOS und Gnu/Linux unterschiedliche Befehlszeilendienstprogramme haben, ist eine andere Version für Mac erforderlich. Wenn Sie nur eine oder die andere benötigen, können Sie einfach diese Zeilen verwenden.
#!/bin/bash
case "$OSTYPE" in
linux*)
docker history --no-trunc --format "{{.CreatedBy}}" $1 | # Informationen aus den Schichten extrahieren
tac | # Datei umkehren
sed 's,^\(|3.*\)\?/bin/\(ba\)\?sh -c,RUN,' | # /bin/(ba)?sh Aufrufe zu RUN ändern
sed 's,^RUN #(nop) *,,' | # RUN #(nop) Anrufe für ENV,LABEL... entfernen
sed 's, *&& *, \\\n \&\& ,g' # mehrzeilige Befehlszeilen gemäß den Best Practices von Docker übersichtlich formatieren
;;
darwin*)
docker history --no-trunc --format "{{.CreatedBy}}" $1 | # Informationen aus den Schichten extrahieren
tail -r | # Datei umkehren
sed -E 's,^(\|3.*)?/bin/(ba)?sh -c,RUN,' | # /bin/(ba)?sh Aufrufe zu RUN ändern
sed 's,^RUN #(nop) *,,' | # RUN #(nop) Anrufe für ENV,LABEL... entfernen
sed $'s, *&& *, \\\ \\\n \&\& ,g' # mehrzeilige Befehlszeilen gemäß den Best Practices von Docker übersichtlich formatieren
;;
*)
echo "unbekannter OSTYPE: $OSTYPE"
;;
esac