在dcos中,我想部署一个mesos容器,其中包含一个自定义映像,该映像存储在本地secure 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代理日志上,错误消息是:
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
所以看来梅索斯没能拍到 Docker 的照片。我已经为dockerd配置了ca文件(将ca文件移动到 /etc/docker/certs.d/
),因此我可以将映像“docker pull”到本地计算机,但我不确定如何为mesos配置ca文件~在mesos代理配置中,存在一个项 --docker_config=VALUE
,但似乎此项只能用于用户名/密码安全注册表,我不知道如何配置ca安全注册表。
有人能帮我吗?!谢谢!
1条答案
按热度按时间ddrv8njm1#
我认为ca文件只是为了加密。你需要用户名和密码在ca文件的方式,我想。
以我的方式,我将auth文件放入容器中以授权我的私有注册表。
我编写了一个web服务,用于下载身份验证文件.tar.gz(格式:
.docker/config.json
在tar.gz)中,在config.json中,{"auths": {"test.com:6999": {"auth": "(username:password) [base64 encode]"}}}
就像{"auths": {"test.com:6999": {"auth": "Y2NjOjEyMw=="}}}
使用mesos uri将准备好的身份验证文件下载到容器中。然后,它将被授权。"uris": [ "http:your download url" ]