marathon在销毁作业后不删除docker容器

时间:2015-07-30 17:49:54

标签: docker mesos marathon

当我将docker容器作为马拉松作业运行时,它会在active mesos slave系统中创建一个docker容器。当暂停或销毁docker作业时,我希望marathon应该删除docker容器,因为它不再需要。但容器不会被删除。每次马拉松重启docker容器作业时,我都必须手动删除它们。

有没有办法自动删除这些不需要的容器?

修改 添加json文件以启动马拉松作业

.tmTheme

2 个答案:

答案 0 :(得分:1)

Marathon将重新启动失败的docker容器,以便您拥有所请求的实例数。可能是您看到Mesos未清理的已停止/未通过的容器。这可能与Mesos延迟容器清理直到GC的事实有关。 见https://issues.apache.org/jira/browse/MESOS-1656

答案 1 :(得分:0)

这是Marathon的行为,因为它适用于长时间运行的服务,一旦任务完成,Marathon就会认为它已在该主机中终止,并立即为运行应用程序分配一个新实例。如果您需要其中一个任务,则可以使用Chronos,因此它使任务只运行一次。我已经编写了一个脚本来自动执行马拉松。

start=$1
end=$2
for (( c=$start; c<=$end; c++ ))
do

         echo "deleting:$c"
         sleep 10
         var=$(curl -X GET http://localhost:8080/v2/apps/docker-app-$c | grep "startedAt")
         echo "$var"
         if [[ $var == *"startedAt"* ]]
         then
          curl -X DELETE http://localhost:8080/v2/apps/docker-app-$c
          echo "going to delete"
         else
                echo "application not started yet"
         fi

 sleep 1
done
echo "Completed!"