1

我正在尝试通过 mesos 使用动态生成的 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 容器。

所有的结果都是一样的。

有什么建议么?

4

2 回答 2

1

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

于 2015-01-21T08:56:13.873 回答
1

对于遇到此问题的任何人,这是由从 docker 容器运行的 mesos-slave 引起的。我们通过将这个文件夹挂载到 mesos slave 中解决了这个问题:

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

这样,写入 mesos slave docker 内该目录的文件也会写入主机驱动器。

于 2015-11-03T23:30:08.937 回答