mikrocontroller.net

Forum: PC Hard- und Software Docker: Dateien aus Image rein- und rauskopieren


Autor: Dennis S. (eltio)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk D. (dicky_d)
Datum:

Bewertung
1 lesenswert
nicht 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...

Autor: oszi40 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dennis S. schrieb:
> Zurückkopieren der Datei in das Image

Dafür gab es einen Image-Editor. Der kluge Mann würde natürlich nie im 
Original herumfummeln, sonderen eine Kopie bearbeiten.

Autor: Sheeva P. (sheevaplug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oszi40 schrieb:
> Dennis S. schrieb:
>> Zurückkopieren der Datei in das Image
>
> Dafür gab es einen Image-Editor. Der kluge Mann würde natürlich nie im
> Original herumfummeln, sonderen eine Kopie bearbeiten.

Du weißt aber schon, was ein Docker-Image ist, oder?

Autor: Sheeva P. (sheevaplug)
Datum:

Bewertung
1 lesenswert
nicht 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

Autor: Dennis S. (eltio)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk D. (dicky_d)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.