对于 docker 编排,我们目前正在使用 mesos 和 chronos 来安排作业运行。
现在,我们放弃了 chronos 并尝试通过 DCO 设置它,使用 mesos 和节拍器。
在 chronos 中,我可以通过 yml 配置激活强制拉取 docker 映像:
container:
type: docker
image: registry.example.com:5001/the-app:production
forcePullImage: true
现在,在使用节拍器和 mesos 的 DC/OS 中,我还希望它强制它始终从注册表中提取最新图像,而不是依赖其缓存版本。
然而 docker 的 json 配置似乎有限:
"docker": {
"image": "registry.example.com:5001/the-app:production"
},
如果我将新图像推送到production
标签,旧图像将用于在 mesos 上运行的作业。
只是为了它,我尝试添加标志:
"docker": {
"image": "registry.example.com:5001/my-app:staging",
"forcePullImage": true
},
但是在 put 请求中,我收到一个错误:
http PUT example.com/service/metronome/v1/jobs/the-app < app-config.json
HTTP/1.1 422 Unprocessable Entity
Connection: keep-alive
Content-Length: 147
Content-Type: application/json
Date: Fri, 12 May 2017 09:57:55 GMT
Server: openresty/1.9.15.1
{
"details": [
{
"errors": [
"Additional properties are not allowed but found 'forcePullImage'."
],
"path": "/run/docker"
}
],
"message": "Object is not valid"
}
如何实现 DC OS 始终获取最新映像?还是我必须始终通过唯一的图像标签更新作业定义?