Estoy trabajando en un proyecto que compila, ejecuta y prueba automáticamente la salida de los programas enviados en C, C ++, Java y Python. Obviamente, esto debe suceder dentro de algún tipo de entorno seguro ya que se puede enviar cualquier tipo de código. Después de intentar crear el contenedor yo mismo con una cárcel chroot, que terminó no siendo práctica, recurrí a los contenedores.
Ahora, digamos que tengo un programa en C que toma un int i
argumento y lo devuelve i+1
. Quiero escribir un script que copie el programa C (digamos plusone.out
), junto con una lista de entradas de prueba ( input.txt
) en un contenedor LxC, ejecuta el programa dentro del contenedor, escribe las salidas en un archivo ( output.txt
) y exporta ese archivo volver al sistema host para que la aplicación principal (que se ejecuta fuera del contenedor) pueda verificar los resultados. También debe haber algunas restricciones en los recursos, pero puedo hacerlo con la cgroups
implementación incorporada de LxC .
Sé cómo hacer la mayoría de las cosas descritas anteriormente, pero por mi vida no puedo descubrir cómo copiar archivos desde el host al contenedor o al revés. Cada tutorial que veo demuestra el comportamiento al ejecutar ls
o echo
dentro del contenedor, pero nunca importa un script o programa desde el sistema host. ¿Alguien puede ayudarme, o posiblemente referirme a la documentación que me puede decir cómo lograr esto?