Ejecutar una secuencia de commands dentro de un contenedor acoplador utilizando script de shell

Soy nuevo en la tecnología Docker, estoy intentando crear un script de shell para configurar un contenedor Docker, mi file script se parece a lo siguiente

#!bin/bash docker run -t -i -p 5902:5902 --name "mycontainer" --privileged myImage:new /bin/bash 

La ejecución de este file de script ejecutará el contenedor en un bash recién invocado.

Ahora necesito ejecutar un file de script (test.sh) que ya está dentro del contenedor del script de shell anterior (por ejemplo: cd /path/to/test.sh && ./test.sh) Cómo hacer eso, por favor no dude en preguntar si el escenario no es claro.

Puede ejecutar un command en un contenedor en ejecución usando docker exec [OPTIONS] CONTAINER COMMAND [ARG...] :

 docker exec mycontainer /path/to/test.sh 

Y para ejecutar desde una session bash:

 docker exec -it mycontainer /bin/bash 

Y a partir de ahí puede ejecutar su secuencia de commands o lo que sea.

Suponiendo que su contenedor acoplable esté funcionando, puede ejecutar commands como:

 docker exec mycontainer /bin/sh -c "cmd1;cmd2;...;cmdn" 

Estaba buscando una respuesta para esta misma pregunta y encontré ENTRYPOINT en la solución Dockerfile para mí.

Dockerfile

 ... ENTRYPOINT /my-script.sh ; /my-script2.sh ; /bin/bash 

Ahora los scripts se ejecutan cuando inicio el contenedor y recibo el post bash después de que se hayan ejecutado los scripts.

Echa un vistazo a los puntos de input también. Podrá usar múltiples CMD https://docs.docker.com/engine/reference/builder/#/entrypoint

Si desea ejecutar el mismo command en varias instancias, puede hacer esto:

 for i in c1 dm1 dm2 ds1 ds2 gtm_m gtm_sl; do docker exec -it $i /bin/bash -c "service sshd start"; done