Jenkins Mesos – 错误:无法访问jarfile

我想通过mesos使用dynamic生成的Docker容器来运行Jenkins。

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文件到Docker容器映像中指定的目录
  • 手动添加slave.jar文件到主机mesos slave上指定的目录
  • 删除从站上的现有docker图像,以确保从站正在拖动最新的docker集装箱。

所有的结果都一样。

有什么build议么?

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

对于有这个问题的人来说,这是由于docker容器运行的mesos-slave造成的。 我们通过将这个文件夹装入到mesos slave来解决这个问题:

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

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