Jenkins Mesos – Error: no se puede acceder al file jar

Estoy tratando de ejecutar Jenkins usando contenedores Docker generados dinámicamente a través de mesos.

WARNING: Logging before InitGoogleLogging() is written to STDERR I0120 12:03:47.100700 26501 fetcher.cpp:76] Fetching URI 'http://172.17.20.31:3000/jnlpJars/slave.jar' I0120 12:03:47.101023 26501 fetcher.cpp:126] Downloading 'http://172.17.20.31:3000/jnlpJars/slave.jar' to '/tmp/mesos/slaves/20150107-091931-521408940-5050-11185-S7/frameworks/20150107-105325-538186156-5050-11332-0354/executors/mesos-jenkins-4bcb550d-bbcf-41ef-9f60-a401f5e4e96d/runs/521ca7ef-1285-4e95-b7bb-09c33faa6286/slave.jar' I0120 12:03:47.213743 26501 fetcher.cpp:255] Skipped extracting path '/tmp/mesos/slaves/20150107-091931-521408940-5050-11185-S7/frameworks/20150107-105325-538186156-5050-11332-0354/executors/mesos-jenkins-4bcb550d-bbcf-41ef-9f60-a401f5e4e96d/runs/521ca7ef-1285-4e95-b7bb-09c33faa6286/slave.jar' I0120 12:03:48.002521 26540 exec.cpp:132] Version: 0.21.1 I0120 12:03:48.035147 26543 exec.cpp:206] Executor registenetworking on slave 20150107-091931-521408940-5050-11185-S7 Error: Unable to access jarfile /mnt/mesos/sandbox/slave.jar 

Yo he tratado:

  • agregar manualmente el file slave.jar al directory especificado en la image del contenedor Docker
  • agregar manualmente el file slave.jar al directory especificado en el host mesos esclavo
  • quitar la image del acoplador existente en el esclavo para garantizar que los esclavos estén tirando del contenedor del acoplador más actual.

Todo con el mismo resultado.

¿Alguna sugerencia?

De forma pnetworkingeterminada, –docker_sandbox_directory está establecido en /mnt/mesos/sandbox , que debe ser un volumen en el contenedor acoplable que se asigna a /tmp/mesos/slaves/<slaveId>/frameworks/<frameworkId>/executors/<executorId>/runs/<taskId>/ . ¿Ves slave.jar en la caja de arena a través de la interfaz de usuario web? ¿Qué tal en la ruta del host enumerada en el logging? ¿Docker realmente monta ese directory de sandbox en /mnt/mesos/sandbox/ dentro del contenedor? ¿Cuáles son los permissions en slave.jar y qué usuario está intentando acceder a él?

Para cualquiera que tenga este problema, esto fue causado por el esclavo mesos que se ejecuta desde un contenedor acoplador. Solucionamos esto montando esta carpeta en el esclavo mesos:

/var/lib/mesos/slave:/var/lib/mesos/slave

De esta forma, los files escritos en ese directory dentro de la window acoplable esclavo mesos también se escriben en la unidad host.