Muszę uruchomić 2 polecenia za pomocą docker exec. Kopiuję plik z kontenera Dockera i nie chcę mieć do czynienia z poświadczeniami, aby użyć czegoś takiego jak ssh. To polecenie kopiuje plik:
sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x
Ale tworzy podkatalog var / log, chcę tego uniknąć, więc gdybym mógł to zrobić w kontenerze docker, powinienem być dobry:
cd /var/log ; tar -cv ./file.log
Jak sprawić, by docker exec uruchamiał 2 polecenia?
-c "cd /var/log; tar -cv \"$1\""
jeśli plik ma parametr 1.Dość często potrzeba kilku poleceń, aby zmienić katalog roboczy - jak w pytaniu OP.
W tym celu docker ma teraz
-w
opcję określenia katalogu roboczego. Np. W niniejszej sprawieźródło
Dla każdego, kto natknie się na to i chce innego sposobu określenia wielu poleceń w celu wykonania bardziej złożonego skryptu:
źródło
the input device is not a TTY
błąd z tą metodą--interactive
Ma zadbać o to, że jeśli nie jest, to nie jestem pewien, co się dzieje, bez szerszego kontekstu, w jaki używasz tego produktu.Jeśli ktoś przyszedł tutaj po świetną odpowiedź, ale chce również lepszego sposobu rozwiązania pierwotnego problemu OP (OP's OP ..?), Aby skopiować plik z kontenera docker, jest teraz
docker cp
polecenie, które zrobi to: https: //docs.docker.com/engine/reference/commandline/cp/źródło