sandbox para ejercicios de programación

16
Mario García Valdez @mariogarciav [email protected] Sandboxes con Docker

Upload: mario-garcia-valdez

Post on 08-Jan-2017

401 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Sandbox para ejercicios de programación

Mario García Valdez @mariogarciav

[email protected]

Sandboxes con Docker

Page 2: Sandbox para ejercicios de programación

http://phk.freebsd.dk/pubs/sane2000-jail.pdf

Page 3: Sandbox para ejercicios de programación
Page 4: Sandbox para ejercicios de programación
Page 5: Sandbox para ejercicios de programación

IMAGEN

MySQL

DockerHub /mariosky

UBUNTUBASE MySQL

UBUNTU

UBUNTU/MySQL:134341

UBUNTU/MySQL:134342

IMAGEN

UBUNTUBASE

����������������

���������������

����������������

��������������

��������������

����������� �������

�������� ������

����������������134342

Page 6: Sandbox para ejercicios de programación
Page 7: Sandbox para ejercicios de programación

class Test(unittest.TestCase): def setUp(self): pass def test_Action(self): self.assertEqual(producto([2, 1, 3], [2, 3, 1]), 10)suite = unittest.TestLoader().loadTestsFromTestCase(Test)Resultado = ResultadoPrueba()suite.run(Resultado)result = {}

def product (l1,l2): while True: pass

Código'Alumno Unit'Test

Código'Python'Ejecuta'la'Prueba

Page 8: Sandbox para ejercicios de programación
Page 9: Sandbox para ejercicios de programación

Imagen docker con:• unit test:

• Java, Python, C#

• sandbox.py

• test_python, test_java, etc.

• git

• redis-py

Page 10: Sandbox para ejercicios de programación

tarea10 tarea 11cola%Python

tarea 12 tarea 13

tarea1 tarea 2cola%C#

tarea 3

cola%Java

Container Python 1

ContainerPython 2

Container C# 1

ContainerJava

tarea 8

tarea 7

tarea 0

Page 11: Sandbox para ejercicios de programación

tarea10 tarea 11cola%Python

tarea 12 tarea 13

Container Python 1

tarea 8

Container Python 2

Resultadotarea 7

Resultadotarea 6

Resultadotarea 5

Resultadotarea 3

Page 12: Sandbox para ejercicios de programación

Container Python 1

tarea 8

Heartbeat Python 2: Vence 2 segundos

Heartbeat Java 1: Vence 2 segundos

Container Python 2

Worker Manager

Lista de Heartbeats

docker'Kill'Python:1

Heartbeat?

Page 13: Sandbox para ejercicios de programación

Worker Manager• En la máquina docker.

• Crea los contenedores.

• Arranca con supervisord (su propio manager).

• Elimina Workers que no responden y crea nuevos.

Page 14: Sandbox para ejercicios de programación

redis• Colas de tareas.

• Heartbeats.

• Resultados de las tareas.

• En memoria, single thread, fast!.

Page 15: Sandbox para ejercicios de programación

Googlehttp://domain.com

Web Page Title

djangorun

view

redis

Tarea 123123

JSON

djangoresultview

Polling+withTime+Out

Resultado 123123

JSON

XHR+PUT

XHR+GET

Sandbox

PostgreSQLTest Results

Page 16: Sandbox para ejercicios de programación

Links• https://www.docker.com/

• https://hub.docker.com/

• redis.io

• https://github.com/mariosky/sandbox

• https://github.com/mariosky/protoboard