Mesos不能从私有Dockerregistry部署容器

我有一个私人的Dockerregistry,可通过https://docker.somedomain.com访问(通过标准端口443而不是5000)。 我的基础架构包括一个Mesosphere的设置,其中启用了docker集装箱。 我正在尝试通过Marathon将特定的容器部署到Mesos从站; 然而,这总是失败,Mesos几乎立即失败,没有数据在沙箱的stderr和标准输出。

我试图从标准的Dockerregistry中部署图像,它似乎工作正常。 我很难弄清楚什么是错的。 我的私人Dockerregistry不需要密码validation(closuresdebugging这个),如果我壳到Meso的奴隶实例,sudo su为根,我可以运行一个'docker拉docker.somedomain.com/services/myapp'每次都成功

这里是我的Marathon发布任务数据:

{ "id": "myapp", "cpus": 0.5, "mem": 64.0, "instances": 1, "container": { "type": "DOCKER", "docker": { "image": "docker.somedomain.com/services/myapp:2", "network": "BRIDGE", "portMappings": [ { "containerPort": 7000, "hostPort": 0, "servicePort": 0, "protocol": "tcp" } ] }, "volumes": [ { "containerPath": "application.yml", "hostPath": "/var/myapp/application.yml", "mode": "RO" } ] }, "healthChecks": [ { "protocol": "HTTP", "portIndex": 0, "path": "/", "gracePeriodSeconds": 5, "intervalSeconds": 20, "maxConsecutiveFailures": 3 } ] } 

我已经坚持了近一天,我所尝试的一切似乎都产生了相同的结果。 任何对此的见解将不胜感激。

我的版本:Mesos:0.22.1 Marathon:0.8.2 Docker:1.6.2

所以这成为卷的问题

 "volumes": [ { "containerPath": "/application.yml", "hostPath": "/var/myapp/application.yml", "mode": "RO" } ] 

在Docker中使用根path容器的根path可能是合法的,但是Mesos似乎不处理这种行为。 将containerPath修改为非根path可解决此问题,即

 "volumes": [ { "containerPath": "/var", "hostPath": "/var/myapp", "mode": "RW" } ] 

如果这是马拉松和registry之间的问题,答案应该在您的registry的http日志中。 如果马拉松连接,将有一个条目。 Mesos主日志也应该包含一个线索。

马拉松和registry之间的问题听起来并不像是一个问题。 你确定你在/ etc / mesos-slave / containers中有'docker,mesos'吗?

你有没有 – 虽然没有authentication – 尝试遵循使用私人Docker存储库 ?

要提供凭据从专用存储库中提取,请将.dockercfg添加到应用程序的uris字段。 $ HOME环境variables将被设置为与$ MESOS_SANDBOX相同的值,因此Docker可以自动获取configuration文件。