2017-09-20 3 views
0

Ich starte einen Docker-Service auf einem Host und starten Sie einen Container für einen Test jedes Mal.Wie überprüft man einen Container nicht genügend Speicherplatz im Container

habe ich unter cmd in das Ende des Tests verwenden, um zu überprüfen, ob der Test aus der Erinnerung ist:

dmesg | grep -F -e 'Out of memory' -e 'invoked oom-killer: gfp_mask=0x' -e ': page allocation failure: order:' 

Aber ich merke, wenn OOM während eines Tests, alle Tests, die, nachdem sie laufen OOM würde da die OOM-Info in dmesg ohne Herunterfahren oder Neustart existiert hat.

Es ist schwer für mich, dmesg info für jeden Test zu teilen, so kann über cmd nicht helfen.

Die Cmd muss im Container ausgeführt werden, da es ein Schritt ist, um einen Test zu beenden.

Antwort

0

ich, dass journalctl gefunden START_TIME und end_time begrenzen kann, so dass unter Befehl kann gut funktionieren:

journalctl -k \ 
      --since "`date -r file "+%Y-%m-%d %H:%M:%S"`" \ 
      --until "`date "+%Y-%m-%d %H:%M:%S"`" | grep -q -F \ 
      -e 'Out of memory' \ 
      -e 'invoked oom-killer: gfp_mask=0x' \ 
      -e ': page allocation failure: order:' 

Ich nehme die Datei mtime als Startzeit, damit ich alle Kernel-Informationen während des Tests bekommen kann.

0

können Sie verwenden:

docker container inspect your-container-name | jq .[].State.OOMKilled 

Returns true/false.

docker container inspizieren zurück json formated stuff über den container. jq ist wie 'sed for json' und mit '. []. State.OOMKilled' filtern Sie Informationen über Ihren Container zu finden ist es OOMKilled oder nicht.

Update:

Sie können mit -f, das Gleiche zu archivieren:

docker container inspect your-container-name -f '{{json .State.OOMKilled}}' 
+0

Ich weiß wirklich nicht, was der jq bedeutet, und ich möchte einen Weg finden, OOM in Container zu überprüfen, tut mir leid, dass ich es nicht klar erzähle. – daixiang0

+0

die cmd ist 'docker inspect' in der Tat, während ich denke, dass Laufzeitprotokoll nicht darin existieren. – daixiang0

+0

Ich verwende docker container inspect, weil ich die Vervollständigung nur für Containernamen habe (docker image inspect vs. docker container inspect vs. docker inspect) – papey

Verwandte Themen