Verwenden Sie den docker history --no-trunc
Befehl , um zu verstehen, wie ein Docker-Image erstellt wurde
.
Sie können eine Docker-Datei aus einem Image erstellen, diese enthält jedoch nicht alles, was Sie vollständig verstehen möchten, wie das Image generiert wurde. Sie können vernünftigerweise die Teile MAINTAINER, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD und ONBUILD der Docker-Datei extrahieren.
Das folgende Skript sollte für Sie funktionieren:
#!/bin/bash
docker history --no-trunc "$1" | \
sed -n -e 's,.*/bin/sh -c #(nop) \(MAINTAINER .*[^ ]\) *0 B,\1,p' | \
head -1
docker inspect --format='{{range $e := .Config.Env}}
ENV {{$e}}
{{end}}{{range $e,$v := .Config.ExposedPorts}}
EXPOSE {{$e}}
{{end}}{{range $e,$v := .Config.Volumes}}
VOLUME {{$e}}
{{end}}{{with .Config.User}}USER {{.}}{{end}}
{{with .Config.WorkingDir}}WORKDIR {{.}}{{end}}
{{with .Config.Entrypoint}}ENTRYPOINT {{json .}}{{end}}
{{with .Config.Cmd}}CMD {{json .}}{{end}}
{{with .Config.OnBuild}}ONBUILD {{json .}}{{end}}' "$1"
Ich verwende dies als Teil eines Skripts, um laufende Container als Bilder neu zu erstellen:
https://github.com/docbill/docker-scripts/blob/master/docker-rebase
Die Docker-Datei ist hauptsächlich nützlich, wenn Sie ein Bild neu verpacken möchten.
Zu beachten ist, dass ein Docker-Image eigentlich nur die Teersicherung einer realen oder virtuellen Maschine sein kann. Auf diese Weise habe ich mehrere Docker-Bilder erstellt. Sogar der Build-Verlauf zeigt mir, wie ich als ersten Schritt beim Erstellen des Images eine riesige TAR-Datei importiere ...