我有一个私人码头注册,可以在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
3条答案
按热度按时间f0ofjuux1#
如果是marathon和注册表之间的问题,答案应该在注册表的http日志中。如果马拉松连接,将有一个条目。而mesos主日志也应该包含一条线索。
不过,这听起来并不像是马拉松和注册之间的问题。你确定在/etc/mesos slave/containeringers里有“docker,mesos”吗?
rekjcdws2#
所以这是卷的问题
在docker中,使用根路径的容器的根路径可能是合法的,但是mesos似乎不能处理这种行为。将containerpath修改为非根路径可以解决这个问题,即
vql8enpb3#
尽管没有身份验证,但您是否尝试使用私有docker存储库进行跟踪?
要提供从私有存储库提取的凭据,请将.dockercfg添加到应用程序的uris字段。$home环境变量将被设置为与$mesos\u sandbox相同的值,以便docker可以自动获取配置文件。