当我将docker容器作为马拉松作业运行时,它会在active mesos slave系统中创建一个docker容器。当暂停或销毁docker作业时,我希望marathon应该删除docker容器,因为它不再需要。但容器不会被删除。每次马拉松重启docker容器作业时,我都必须手动删除它们。
有没有办法自动删除这些不需要的容器?
修改 添加json文件以启动马拉松作业
.tmTheme
答案 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!"