2015-07-30 14 views
8

işini imha ettikten sonra bir docker kabını silmez, etkin mezos slave sisteminde bir docker konteyneri oluşturur. docker görevini askıya alırken ya da yok ederken, maratonun artık gerekli olmadıkça docker konteynerini silmesini beklerim. Ancak konteyner silinmez. Marathon bir docker konteyner işini her başlatışında onları elimden silmek zorundayım.maraton, maraton işi olarak bir docker kabını çalıştırdığımda,

Bu istenmeyen kapları otomatik olarak silmenin herhangi bir yolu var mı?

Düzenleme: Eğer istenen örneklerinin sayısını olması için başarısız bir liman işçisi kabı yeniden başlayacaktır bir maraton iş

{ 
    "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} 
     ] 
    } 
    } 
} 
+0

hangi mesos sürümünü kullanırsınız? – haosdent

+0

Geçerli mezo kodunu kontrol ediyorum, kap çıkarılmalıdır. – haosdent

+0

Yok edilen uygulamalar için aynı davranışı gözlemliyorum. Maraton sorunu veya mezos-köle sorunu olup olmadığından emin değil. – Dharmit

cevap

1

Maraton başlatmak için json dosyası ekleme. Mesos tarafından temizlenmeyen durmuş/başarısız konteynerleri görebilirsiniz. Bu, Mesos'un konteyner temizlemesini GC'ye kadar geciktirmesi ile ilgili olabilir. uzun koşu hizmetlerine yönelik oldukları için Maraton o konakta sonlandırıldı varsayar en kısa sürede görev tamamlandığında, https://issues.apache.org/jira/browse/MESOS-1656

0

O Marathon davranıştır görüp hemen bunun çalıştırmak için yeni bir örneğini atar uygulama. Görevlerden birine ihtiyacınız varsa, Chronos'u kullanabilirsiniz, bu yüzden görevi yalnızca bir kez çalıştırmayı sağlar. Maraton için otomatik olarak bunu yapmak için bir senaryo yazdım.

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!" 
İlgili konular