2015-01-14 15 views
21

JVM işlemi içeren bir Docker kapsayıcım var. İşlem bittiğinde konteyner tamamlanır ve durur.Docker konteynerinin neden durdurulduğunu nasıl bilebilirim?

Minnettarlığım nadir olsa da, JVM'm aniden bir arıza ile, örn. OutOfMemoryError. Bu olduğunda konteynerim durur, normal bir JVM çıkışı gibi.

Normal JVM günlüğe kaydetme için günlüğe kaydetme vb. Dağıtabilirim, ancak bu zorlu durumda JVM'nin genellikle stderr'de bulunan ölmekte olan sözcüklerini bilmek istiyorum.

Kapsayıcımın neden durdurulduğunu bilmenin bir yolu var mı? Günlükleri, stderr'i veya bu satırlardaki bir şeyi nasıl görebiliyorsunuz?

+4

Durdurulan kapsayıcı için 'docker günlükleri'nde ne görüyorsunuz? Etkinliklere abone olmayı denediniz mi? 'Docker' daemon bir API ortaya çıkarır: https://docs.docker.com/reference/api/docker_remote_api_v1.16/ – Andy

+1

Konteyner gitti, yani docker ps yaptığımda yok, yani nasıl yapılacağını bilmiyorum oturum açar. Olaylar api'yi kontrol edeceğim. İzlemem var, jvm öldüğünü biliyorum ... Sadece son mesajların stderr'e girişini bilmiyorum, kaydedilmemiş (OOM durumunda, logger çalışmayabilir bile) – Greg

+13

Docker günlüklerini çalıştırabilirsiniz [ Durdurulmuş kaplarda bile ContainerName] veya [ContainerID] komutu. Bunları docker ps ile görebilirsiniz –

cevap

25

Durdurulan kutularda bile docker logs [ContainerName] veya docker logs [ContainerID] komutunu çalıştırabilirsiniz. Bunları docker ps -a ile görebilirsiniz.

Kaynak: the comment of Usman Ismail yukarıdaki: Bu, yorumunu uygun bir cevaba dönüştürmenin sadece bir yoludur.

İlgili konular