mesos无法从专用docker注册表部署容器

zsohkypk  于 2021-06-21  发布在  Mesos
关注(0)|答案(3)|浏览(383)

我有一个私人码头注册,可以在https://docker.somedomain.com (超过标准端口443而不是5000)。我的基础设施包括一个中间层,其中有码头集装箱船启用设置。我正试图通过马拉松将一个特定的容器部署到一个mesos奴隶身上;然而,这种方法总是失败的,因为mesos几乎是在沙盒的stderr和stdout中没有数据的情况下立即失败了任务。
我试着从标准docker注册表中的一个映像进行部署,它似乎工作正常。我很难弄清楚到底出了什么问题。我的私有docker注册表不需要密码身份验证(调试时关闭),如果我将shell放入meso的从属示例,并将sudo su作为root,我每次都可以成功运行“docker pull docker.somedomain.com/services/myapp”。
以下是我开始任务的马拉松日志数据:

{
  "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

f0ofjuux

f0ofjuux1#

如果是marathon和注册表之间的问题,答案应该在注册表的http日志中。如果马拉松连接,将有一个条目。而mesos主日志也应该包含一条线索。
不过,这听起来并不像是马拉松和注册之间的问题。你确定在/etc/mesos slave/containeringers里有“docker,mesos”吗?

rekjcdws

rekjcdws2#

所以这是卷的问题

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

在docker中,使用根路径的容器的根路径可能是合法的,但是mesos似乎不能处理这种行为。将containerpath修改为非根路径可以解决这个问题,即

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

vql8enpb3#

尽管没有身份验证,但您是否尝试使用私有docker存储库进行跟踪?
要提供从私有存储库提取的凭据,请将.dockercfg添加到应用程序的uris字段。$home环境变量将被设置为与$mesos\u sandbox相同的值,以便docker可以自动获取配置文件。

相关问题