Docker: Dateien aus Image rein- und rauskopieren

OP #5027075
Lesenswert?

Hallo zusammen,

folgendes soll realisiert werden:
1) Erstellen eines Dockerimages
2) Kopieren einer Datei aus dem Image auf den Host
3) Manipulieren der Datei auf dem Host
4) Zurückkopieren der Datei in das Image

Die Punkte 1 bis 3 sind erledigt. Bei 4 wäre mein erster Ansatz, das 
Image aus 1 als Base Image zu nehmen und die manipulierte Datei mittels 
eines eigenen Dockerfiles zu kopieren.

Problem: Der Name des Base Images wird durch den Anwender bestimmt. Ist 
es möglich das Base Image als Paramter beim Aufruf von "docker build" zu 
übergeben? Irgendwelche anderen Ideen?

Viele Grüße
#5027867
Lesenswert?

für mich klingt das so als willst du, für die einmalige Verwendung ne 
Datei austauschen.
Das kannst du mit mapping erledigen, dafür musst du kein image bauen.

... und die Antwort auf deine eigentliche frage: nein, da könntest du 
nur, ggf. das Dockerfile umschreiben.

Darf ich nach dem Anwendungsfall fragen? das klingt erstmal 
merkwürdig...
#5028108
Lesenswert?

Dennis S. schrieb:
> folgendes soll realisiert werden:
> 1) Erstellen eines Dockerimages
> 2) Kopieren einer Datei aus dem Image auf den Host
> 3) Manipulieren der Datei auf dem Host
> 4) Zurückkopieren der Datei in das Image

Bitte entschuldige meine Offenheit, aber das hört sich für mich nach 
einem kaputten Konzept an. Die Idee ist vielmehr, daß Images 
unveränderbar sein, und bei Änderungen neu gebaut werden sollten.

Man kann so etwas mit Containern machen, mit "docker cp" -- aber 
sonderlich elegant ist das leider auch nicht.

> Die Punkte 1 bis 3 sind erledigt.

Huch, wie das?

> Bei 4 wäre mein erster Ansatz, das
> Image aus 1 als Base Image zu nehmen und die manipulierte Datei mittels
> eines eigenen Dockerfiles zu kopieren.

Wie gesagt, das hört sich nach einem kaputten Konzept an. Wenn der User 
eh das Image bauen muß, kann mit den Befehlen "COPY" und "ADD" im 
Dockerfile eine (manipulierte) Datei in das Image übertragen werden. 
Kannst Du uns vielleicht genauer erklären, was genau Du erreichen 
willst, bzw. was Dein besonderer Anwendungsfall ist?

> Problem: Der Name des Base Images wird durch den Anwender bestimmt. Ist
> es möglich das Base Image als Paramter beim Aufruf von "docker build" zu
> übergeben? Irgendwelche anderen Ideen?

docker help build /-t
OP #5028163
Lesenswert?

Dirk D. schrieb:
> Das kannst du mit mapping erledigen, dafür musst du kein image bauen.

Kannst du das genauer erläutern?

Sheeva P. schrieb:
> Bitte entschuldige meine Offenheit, aber das hört sich für mich nach
> einem kaputten Konzept an. Die Idee ist vielmehr, daß Images
> unveränderbar sein, und bei Änderungen neu gebaut werden sollten.

Um es klarer zu formulieren: zur Zeit ist es so, dass ich das Docker 
Image "UNmodified" baue, die Datei herauskopiere und manipuliere und 
anschließend das Image "modified" mit Base Image "UNmodified" baue in 
das die manipulierte Datei reinkopiert wird.

Sheeva P. schrieb:
> Huch, wie das?

1) docker build -t <tag> .
2) docker run --rm --entrypoint cat <tag> /programm > programm
3) foo.exe programm

Sheeva P. schrieb:
> docker help build /-t
Das bestimmt den Namen des Tags. Wie soll mir das helfen? Der Punkt ist 
ja, dass in Dockerfile.modified das Base Image angegeben werden muss, 
welches beim Bauen von Dockerfile.unmodified vom User angegeben wurde.

Gruß
Dennis
#5028188
Lesenswert?

Dennis S. schrieb:
> Dirk D. schrieb:
>> Das kannst du mit mapping erledigen, dafür musst du kein image bauen.
>
> Kannst du das genauer erläutern?
Klar

> Sheeva P. schrieb:
>> Huch, wie das?
>
> 1) docker build -t <tag> .
> 2) docker run --rm --entrypoint cat <tag> /programm > programm
> 3) foo.exe programm

4) docker run -v ./programm:/programm (und deine üblichen optionen)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren