Wenn ich einen Docker-Container als Marathon-Job ausführe, erstellt er einen Docker-Container im aktiven Mesos-Slave-System. Wenn ich den Docker-Job aussetze oder zerstöre, erwarte ich, dass der Marathon den Docker-Container löscht, da er nicht mehr benötigt wird. Aber der Container wird nicht gelöscht. Ich muss sie jedes Mal manuell löschen, wenn ein Docker-Container-Job neu gestartet wird.
Gibt es eine Möglichkeit, diese unerwünschten Container automatisch zu löschen?
Bearbeiten: JSON-Datei zum Starten eines Marathon-Jobs hinzufügen
%Vor%Marathon wird einen Docker-Container neu starten, der fehlgeschlagen ist, sodass Sie die Anzahl der angeforderten Instanzen haben. Es kann sein, dass Sie gestoppte / fehlgeschlagene Container sehen, die von Mesos nicht bereinigt wurden. Dies könnte mit der Tatsache zusammenhängen, dass Mesos die Containerbereinigung bis GC verzögert. siehe Ссылка
Es ist das Verhalten von Marathon, weil es für lange laufende Dienste gedacht ist. Sobald die Aufgabe abgeschlossen ist, geht Marathon davon aus, dass es in diesem Host beendet wurde und es wird sofort eine neue Instanz zum Ausführen der Anwendung zuweisen. Wenn Sie eine Aufgabe benötigen, können Sie Chronos verwenden, so dass die Aufgabe nur einmal ausgeführt wird. Ich habe ein Skript geschrieben, um dies automatisch für Marathon zu tun.
%Vor%