如何使用安全的docker注册表(由CA)为mesos容器?

时间:2017-07-21 07:29:39

标签: mesos dcos

在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安全注册表。

任何人都可以帮帮我吗?!谢谢!

1 个答案:

答案 0 :(得分:0)

我认为CA文件仅用于加密。我认为你需要用ca文件的用户名和密码。

以我的方式,我将auth文件放入容器中以授权我的私人注册表。

  1. 我写了一个用于下载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=="}}}

  2. 使用Mesos uris下载准备好容器的auth文件。然后,它会授权。 "uris": [ "http:your download url" ]