在DCOS中,我想部署一个带有自定义映像的mesos容器,该映像存储在本地安全docker注册表中,并且已由CA保护(不是用户名和密码!)
json是
{
"id": "/gpu-tflinker",
"cmd": "while [ true ] ; do nvidia-smi; sleep 5; done",
"cpus": 0.1,
"mem": 1024,
"gpus": 1,
"instances": 1,
"constraints": [
[
"hostname",
"CLUSTER",
"10.140.0.22"
]
],
"container": {
"type": "MESOS",
"docker": {
"image": "tflinker:test-gpu",
"credential": null
}
}
}
上面的json无法在marathon上运行,并且mesos的stderr和stdout文件上没有内容,在mesos-agent日志上,错误信息是:
E0721 05:01:57.726367 22498 slave.cpp:3976] Container 'e2c68720-0fb7-41bc-9d3b-a2b5e4793816' for executor 'gpu-t
flinker.b6f96725-6dd1-11e7-ba5d-0242b2c758c0' of framework 1079aaea-6dde-4dc1-8990-d926a895de78-0000 failed to s
tart: Unexpected HTTP response '401 Unauthorized' when trying to get the manifest
W0721 05:01:57.726478 22497 composing.cpp:541] Container 'e2c68720-0fb7-41bc-9d3b-a2b5e4793816' is already destr
oyed
I0721 05:01:57.726583 22497 slave.cpp:4082] Executor 'gpu-tflinker.b6f96725-6dd1-11e7-ba5d-0242b2c758c0' of fram
ework 1079aaea-6dde-4dc1-8990-d926a895de78-0000 has terminated with unknown status
I0721 05:01:57.726603 22497 slave.cpp:4193] Cleaning up executor 'gpu-tflinker.b6f96725-6dd1-11e7-ba5d-0242b2c75
8c0' of framework 1079aaea-6dde-4dc1-8990-d926a895de78-0000
I0721 05:01:57.726794 22497 slave.cpp:4281] Cleaning up framework 1079aaea-6dde-4dc1-8990-d926a895de78-0000
所以似乎mesos无法获取docker镜像。我已经为dockerd配置了CA文件(将ca文件移动到/etc/docker/certs.d/
),所以我可以将“停靠”图像移植到本地机器,但我不知道如何为mesos配置CA文件〜
在mesos-agent配置中,存在项--docker_config=VALUE
,但似乎此项只能用于用户名/密码安全注册表,我不知道如何配置CA安全注册表。
任何人都可以帮帮我吗?!谢谢!
答案 0 :(得分:0)
我认为CA文件仅用于加密。我认为你需要用ca文件的用户名和密码。
以我的方式,我将auth文件放入容器中以授权我的私人注册表。
我写了一个用于下载auth文件的Web服务
xxx.tar.gz(格式:tar.gz中的.docker/config.json
)
在config.json中,{"auths": {"test.com:6999": {"auth": "(username:password) [base64 encode]"}}}
如{"auths": {"test.com:6999": {"auth": "Y2NjOjEyMw=="}}}
使用Mesos uris下载准备好容器的auth文件。然后,它会授权。
"uris": [
"http:your download url"
]