Docker exec - Schreiben Sie Text in die Datei im Container

9

Ich möchte eine Textzeile in eine Textdatei INSIDE eines laufenden Andockcontainers schreiben. Folgendes habe ich bisher versucht:

%Vor%

Antwort:

%Vor%

Zweiter Versuch:

%Vor%

Antwort:

%Vor%

Irgendwelche Ideen?

    
jwi 29.02.2016, 15:29
quelle

2 Antworten

23

eval ist eine Shell eingebaut , während docker exec erfordert, dass ein externes Dienstprogramm aufgerufen wird. Daher ist eval nicht eine Option.

Rufen Sie stattdessen eine Shell-ausführbare Datei im Container ( bash ) explizit auf und übergeben Sie ihr über die Option -c den Befehl, der als Zeichenfolge ausgeführt werden soll :

%Vor%

Wenn Sie eine doppelt zitierte Zeichenfolge verwenden, um an bash -c zu übergeben, stellen Sie sicher, dass die aktuelle -Shell zuerst die String-Interpolation durchführt, während die bash -Instanz des Containers sieht das erweiterte Ergebnis als Literal als Teil der eingebetteten einfach zitierten Zeichenfolge.

Wie für Ihre Symptome :

  • /home/user/.app/app.config: No such file or directory wurde gemeldet, weil die beabsichtigte Umleitung im Container tatsächlich in der Shell Ihres Hosts erfolgte - und weil dir. /home/user/.app ist anscheinend nicht im Dateisystem Ihres Hosts vorhanden, der Befehl ist fehlgeschlagen grundsätzlich , bevor die Shell Ihres Hosts versucht hat, den Befehl auszuführen ( bash bricht die Ausführung des Befehls ab) Wenn eine Ausgabeumleitung nicht durchgeführt werden kann.)

    • Obwohl Ihr erster Befehl auch eval enthielt, tauchte seine Verwendung nicht als Problem auf, bis Ihr zweiter Befehl, der wirklich ausgeführt wurde
    • , ausgeführt wurde
  • exec: "eval": executable file not found in $PATH ist passiert, weil, wie bereits erwähnt, eval kein externes Dienstprogramm ist, sondern nur eine Shell und docker exec externe Dienstprogramme ausführen.

mklement0 01.03.2016, 03:31
quelle
4

Zusätzlich:

Wenn Sie Text außerhalb des Containers schreiben müssen, funktioniert das auch:

%Vor%

Dadurch werden Sie in den Container geleitet. Das funktioniert natürlich auch für reinen Text (keine Datei). Es ist wichtig, den Parameter -t zu lassen.

Siehe Ссылка

UPDATE (falls Sie nur Dateien, nicht Teile von Dateien kopieren müssen):

Docker v17.03 hat docker cp , das zwischen den lokalen fs und dem Container kopiert: Ссылка

    
Risadinha 26.10.2016 12:59
quelle

Tags und Links