Мне нужно запустить 2 команды с помощью docker exec. Я копирую файл из контейнера докеров и не хочу иметь дело с учетными данными, чтобы использовать что-то вроде ssh. Эта команда копирует файл:
sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x
Но он создает подкаталог var / log, я хочу избежать этого, поэтому, если бы я мог сделать это в контейнере докера, у меня все было бы хорошо:
cd /var/log ; tar -cv ./file.log
Как я могу заставить docker exec запускать 2 команды?
-c "cd /var/log; tar -cv \"$1\""
если файл находится в параметре 1.Довольно часто для смены рабочего каталога требуется несколько команд - как в вопросе OP.
Для этого в докере теперь есть
-w
возможность указать рабочий каталог. Например, в настоящем делеисточник
Для всех, кто наткнется на это и хочет, чтобы другой способ указать несколько команд для выполнения более сложного сценария:
источник
the input device is not a TTY
об ошибке при использовании этого метода--interactive
Должен позаботиться о том , что, если это не так , то я не знаю , что происходит , не имея более широкий контекст , как вы используете это.Если кто-то еще пришел сюда за потрясающим ответом, но также хочет получить лучший способ решить исходную проблему OP (OP OP ..?) Для копирования файла из контейнера докеров, теперь есть
docker cp
команда, которая сделает это: https: //docs.docker.com/engine/reference/commandline/cp/источник