Cómo ejecutar 2 comandos con docker exec


Necesito ejecutar 2 comandos con docker exec. Estoy copiando un archivo del contenedor docker y no quiero tener que lidiar con 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 docker debería ser bueno:

cd /var/log ; tar -cv ./file.log

¿Cómo puedo hacer que docker exec ejecute 2 comandos?

 36
Author: Solx, 2015-10-29

3 answers

Esto llevó a la respuesta: Carácter de escape en la línea de comandos de Docker Terminé haciendo esto:

sudo docker exec boring_hawking bash -c 'cd /var/log ; tar -cv ./file.log' | tar -x

Así que funciona, más o menos, ejecutando el comando one bash con un parámetro que son los 2 comandos que quiero ejecutar.

 72
Author: Solx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:30

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 opción -w para especificar el directorio de trabajo. Por ejemplo, en el presente caso

docker exec -w /var/log boring_hawking tar -cv ./file.log
 4
Author: P-Gn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-30 05:22:57

Si alguien más vino aquí para la respuesta impresionante, pero también quiere una mejor manera de resolver el problema original de OP (OP's OP..?) para copiar un archivo de un contenedor docker, ahora hay un comando docker cp que hará esto: https://docs.docker.com/engine/reference/commandline/cp /

 0
Author: Will the Thrill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-10 20:02:55