Necesito ejecutar 2 comandos con docker exec. Estoy copiando un archivo del contenedor de la ventana acoplable y no quiero tener que lidiar con las credenciales para usar algo como ssh. Este comando copia un archivo:
sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x
Pero crea un subdirectorio var / log, quiero evitar eso, así que si pudiera hacer esto en el contenedor de la ventana acoplable, debería ser bueno:
cd /var/log ; tar -cv ./file.log
¿Cómo puedo hacer que Docker Exec ejecute 2 comandos?
-c "cd /var/log; tar -cv \"$1\""
si el archivo está en el parámetro 1.Muy a menudo, la necesidad de varios comandos es cambiar el directorio de trabajo, como en la pregunta del OP.
Para eso, Docker ahora tiene una
-w
opción para especificar el directorio de trabajo. Por ejemplo, en el presente casofuente
Para cualquier otra persona que se encuentre con esto y quiera una forma diferente de especificar varios comandos para ejecutar un script más complejo:
fuente
the input device is not a TTY
--interactive
supone que se ocupará de eso, si ese no es el caso, entonces no estoy seguro de lo que está sucediendo sin tener un contexto más amplio sobre cómo está usando esto.Si alguien más vino aquí para obtener la respuesta increíble, pero también quiere una mejor manera de resolver el problema original de OP (OP's OP ..?) Para copiar un archivo de un contenedor de ventana acoplable, ahora hay un
docker cp
comando que hará esto: https: //docs.docker.com/engine/reference/commandline/cp/fuente