2015-01-20 88 views
1

我想通过mesos使用动态生成的Docker容器来运行Jenkins。Jenkins Mesos - 错误:无法访问jarfile

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 registered on slave 20150107-091931-521408940-5050-11185-S7 
Error: Unable to access jarfile /mnt/mesos/sandbox/slave.jar 

我曾尝试:

  • 手动添加slave.jar文件到 多克尔容器映像中指定
  • 手动添加slave.jar文件对所指定的目录的目录 host mesos slave
  • 删除从站上的现有泊坞窗图像以确保从站正在拉动最新的泊坞窗容器。

所有结果都一样。

有什么建议吗?

+0

你使用的是https://github.com/jenkinsci/mesos-plugin吗?你使用什么码头图像?工厂/ jenkins-mesos或folsomlabs/jenkins-mesos之一? – Adam 2015-01-21 08:50:07

回答

1

默认情况下,--docker_sandbox_directory设置为/mnt/mesos/sandbox,它应该是映射到/tmp/mesos/slaves/<slaveId>/frameworks/<frameworkId>/executors/<executorId>/runs/<taskId>/的泊坞窗容器中的卷。您是否通过Web UI在沙盒中看到了slave.jar?在日志中列出的主机路径上如何? docker是否真的将该沙箱目录安装在容器内的/mnt/mesos/sandbox/? slave.jar上的权限以及用户试图访问它的权限是什么?

+0

我可以通过将slave.jar下载到主机并将主机卷挂载到docker容器来实现它。 我猜Docker实际上并没有将沙盒目录安装到容器中。是否有一些配置我错过了它来动态地这样做? – Blanco 2015-01-21 16:01:10

+0

如果您使用码头集装箱(--containerizers = docker,mesos),则沙箱应自动安装,并且应正确设置MESOS_SANDBOX env。你可以做一个'docker inspect'并且默认安装哪些卷? – Adam 2015-01-25 07:05:07

+0

我有这个确切的问题,并将文件复制到主机,并设置'容器路径'指向插件中的此文件似乎并不工作。还有没有其他已知的修复方法,或者您是否提出了更持久的方法? @Blanco – 2015-03-09 22:07:15

1

对于有此问题的人,这是由从docker容器运行的mesos-slave造成的。我们解决了这个由这个文件夹安装到mesos奴:

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

这样,写入mesos从泊坞窗内该目录中的文件也被写入到主驱动器。