当我作为马拉松作业运行docker容器时,它会在活动mesos从系统中创建一个docker容器。当暂停或销毁docker作业时,我希望marathon应该删除docker容器,因为它不再需要。但容器不会被删除。每次重新启动docker容器作业时,我都必须手动删除它们。
有没有办法自动删除这些不需要的容器?
编辑:添加用于启动马拉松作业的json文件
{
"id": "pga-docker",
"cmd":"sh pga-setup.sh",
"cpus": 0.5,
"mem": 1024.0,
"container": {
"type": "DOCKER",
"docker": {
"image": "pga:test",
"parameters": [
{ "key": "env", "value": "SERVER_HOST=value" },
{ "key": "env", "value": "SERVER_PORT=value" }
],
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 80, "hostPort": 0}
]
}
}
}
2条答案
按热度按时间xmq68pz91#
marathon将重新启动失败的docker容器,以便您拥有所请求的示例数。这可能是你看到停止/失败的集装箱没有清理迈索斯。这可能与mesos将容器清理延迟到gc有关。看到了吗https://issues.apache.org/jira/browse/mesos-1656
alen0pnh2#
这是marathon的行为,因为它是用于长时间运行的服务的,一旦任务完成,marathon就会假定它已经在该主机中终止,并立即为运行应用程序分配一个新示例。如果你需要其中一个任务,你可以使用chronos,这样就使得任务只能运行一次。我已经写了一个脚本来自动完成马拉松。