Ich muss 2 Befehle mit Docker Exec ausführen. Ich kopiere eine Datei aus dem Docker-Container und möchte mich nicht mit Anmeldeinformationen befassen müssen, um so etwas wie ssh zu verwenden. Dieser Befehl kopiert eine Datei:
sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x
Aber es wird ein Unterverzeichnis var / log erstellt. Ich möchte das vermeiden. Wenn ich dies im Docker-Container tun könnte, wäre ich gut:
cd /var/log ; tar -cv ./file.log
Wie kann ich Docker Exec dazu bringen, 2 Befehle auszuführen?
-c "cd /var/log; tar -cv \"$1\""
wenn sich die Datei auf Parameter 1 befindet.Sehr oft müssen mehrere Befehle das Arbeitsverzeichnis ändern - wie in der Frage des OP.
Dafür hat Docker jetzt die
-w
Möglichkeit, das Arbeitsverzeichnis anzugeben. ZB im vorliegenden Fallquelle
Für alle anderen, die darüber stolpern und auf andere Weise mehrere Befehle angeben möchten, um ein komplexeres Skript auszuführen:
quelle
the input device is not a TTY
--interactive
soll sich darum kümmern, wenn das nicht der Fall ist, bin ich mir nicht sicher, was los ist, ohne einen breiteren Kontext darüber zu haben, wie Sie dies verwenden.Wenn jemand anderes wegen der großartigen Antwort hierher gekommen ist, aber auch eine bessere Möglichkeit zur Lösung des ursprünglichen Problems von OP (OP's OP ..?) Möchte, um eine Datei aus einem Docker-Container zu kopieren, gibt es jetzt einen
docker cp
Befehl, der dies ausführt : https: //docs.docker.com/engine/reference/commandline/cp/quelle