GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecutar dos comandos con docker exec

En su primer ejemplo, está dando el -c marca a docker exec . Esa es una respuesta fácil:docker exec no tiene un -c bandera.

En su segundo ejemplo, su shell está analizando esto en dos comandos antes de que Docker lo vea. Es equivalente a esto:

if docker exec [id] cd /var/www/project
then
    composer install
fi

Primero, el docker exec se ejecuta, y si sale 0 (éxito), composer install intentará ejecutar localmente , fuera de Docker.

Lo que debe hacer es pasar ambos comandos como un solo argumento a docker exec usando una cuerda. Entonces no serán interpretados por un caparazón hasta que ya estén dentro del contenedor.

docker exec [id] "cd /var/www/project && composer install"

Sin embargo, como notó en los comentarios, esto tampoco funciona. Eso es porque cd es un shell incorporado y no existe por sí solo. Intentar ejecutarlo como el comando inicial fallará. Entonces, el siguiente paso es entregar esto a un shell para que lo ejecute.

docker exec [id] "bash -c 'cd /var/www/project && composer install'"

Y finalmente, en este punto el && se ha movido a un conjunto interno de comillas, por lo que realmente no necesitamos las comillas alrededor del bash comando... puedes soltarlos si lo prefieres.

docker exec [id] bash -c 'cd /var/www/project && composer install'

Todo lo que sigue a la identificación del contenedor es el comando a ejecutar, por lo que en el primer ejemplo -c no es una opción para ejecutar, pero una ventana acoplable de comando intenta ejecutarse y falla porque ese comando no existe.

Lo más probable es que haya encontrado esta sintaxis de un docker run comando donde el punto de entrada se estableció en /bin/sh . Sin embargo, exec omite el punto de entrada, por lo que debe incluir el comando completo para ejecutar. Como han señalado otros, ese comando incluye un shell como bash o, en el siguiente ejemplo, sh:

docker exec [id] /bin/sh -c 'cd /var/www/project && composer install'

Linux
  1. Qué es Git Bash; Trabajar con comandos de Git Bash

  2. Algunos comandos DOCKER

  3. ¿Ejecutar una línea de comandos con un Sudo?

  4. ¿Ejecutar comando Nohup con entrada?

  5. Los comandos de Docker cuelgan sin respuesta

Docker Exec:su comando Goto para ejecutar comandos en Docker

40 comandos importantes de Docker para desarrolladores de software

Manejar el salto de línea con los comandos Fold y FMT en la terminal de Linux

Cómo implementar CouchDB como un clúster con Docker

Instalar WordPress con Docker en Ubuntu 20.04

Comando exec de Linux con ejemplos