475 Stimmen

Wie kann ich das Dateisystem eines fehlgeschlagenen `docker build` überprüfen?

Ich versuche, ein neues Docker-Image für unseren Entwicklungsprozess zu erstellen, wobei cpanm verwendet wird, um eine Reihe von Perl-Modulen als Basisimage für verschiedene Projekte zu installieren.

Beim Entwickeln des Dockerfiles gibt cpanm einen Fehlercode zurück, weil einige der Module nicht sauber installiert wurden.

Ich bin ziemlich sicher, dass ich apt dazu bringen muss, noch einige Dinge zu installieren.

Wo finde ich das Verzeichnis /.cpanm/work, das in der Ausgabe zitiert wird, um die Protokolle zu überprüfen? Im Allgemeinen, wie kann ich das Dateisystem eines fehlgeschlagenen docker build-Befehls überprüfen?

Nachdem ich ein find ausgeführt habe, habe ich entdeckt

/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm

Ist das zuverlässig, oder sollte ich besser einen "nackten" Container erstellen und Dinge manuell ausführen, bis ich alles habe, was ich brauche?

-1voto

VonC Punkte 1117238

Mit BuildKit, wie in der Antwort von Alexis Wilke, kannst du ktock/buildg verwenden.

Siehe "Interaktiver Debugger für Dockerfile" von Kohei Tokunaga

buildg ist ein Tool zum interaktiven Debuggen von Dockerfile basierend auf BuildKit.

  • Quellcode-Inspektion
  • Breakpoints und Schrittausführung
  • Interaktive Shell auf einem Schritt mit eigenen Debugging-Tools
  • Basiert auf BuildKit (benötigt nicht zusammengeführte Patches)
  • Unterstützt Rootless

Beispiel:

$ buildg.sh debug --image=ubuntu:22.04 /tmp/ctx
WARN[2022-05-09T01:40:21Z] using host network as the default            
#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.1s

#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 195B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/busybox:latest
#3 DONE 3.0s

#4 [build1 1/2] FROM docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8
#4 resolve docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8 0.0s done
#4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 772.81kB / 772.81kB 0.2s done
Dateiname: "Dockerfile"
      2| RUN echo hello > /hello
      3| 
      4| FROM busybox AS build2
 =>   5| RUN echo hi > /hi
      6| 
      7| FROM scratch
      8| COPY --from=build1 /hello /
>>> break 2
>>> breakpoints
[0]: Zeile 2
>>> continue
#4 extracting sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0.0s done
#4 DONE 0.3s
...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X