【发布时间】:2015-07-30 17:49:54
【问题描述】:
当我将 docker 容器作为马拉松作业运行时,它会在活动的 mesos 从属系统中创建一个 docker 容器。当暂停或销毁 docker 作业时,我希望马拉松应该删除不再需要的 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}
]
}
}
}
【问题讨论】:
-
你使用哪个 mesos 版本?
-
我检查了当前的mesos代码,容器应该被移除了。
-
我正在观察被破坏的应用程序的相同行为。不确定是 Marathon 问题还是 mesos-slave 问题。
-
我的 mesos 0.22.1,我正在使用命令行 json 文件来实例化马拉松中的作业。但是当我销毁应用程序时,它不会从主机系统中删除容器,甚至不会停止容器。所以我开始相信,一旦马拉松工作开始,就与托管系统中的码头工人无关。但我错了,因为当我通过“docker stop”命令强制停止容器时,我可以立即看到 marathon 再次启动一个新容器,这是预期的 marathon 作业行为。所以这种方法可能有问题,我附上我的 json 文件,让我感觉很舒服。