Motywacja: Aby uruchomić podstawowy health-check na pojemniku Döcker zliczając że pewnej liczby wiadomości przepływać przez stdout w określonym horyzoncie czasowymCzy można odczytać wiadomości przekazywane przez standardowe wyjście z kontenera Docker? (Bez `logs` doker)
Bezpośrednim celem: Z w powłoce uruchamianej przez docker exec
odczytane dane przesyłane do stdout z głównego procesu (PID 1)
Nie jestem nawet pewien, czy to, co chcę, jest możliwe. Jeśli tak jest, wyjaśnienie, dlaczego nie byłoby bardzo cenne - i pomogłoby pogłębić moją wiedzę.
Kroki do odtworzenia:
Uruchom Container -
container1
docker run -it --name container1 ubuntu bash -c -i "COUNT=0; while true; do echo Keep the dance floor beat going; ((COUNT++)); sleep 1; echo \"Count is: \${COUNT}\"; done;"
W innym oknie terminala
docker exec
aby rozpocząć kolejny proces w tym samym pojemnikudocker exec -it container1 bash
Czy mogę jakoś tail
/print
/read
wiadomości przekazywane przez standardowe wyjście PID 1?
Rozumiem, że istnieją prace dookoła - na przykład przepuszczanie przez tee
lub w inny sposób zapisywanie na dysku - ale liczyłem na magiczną kulę.
Może to? http://stackoverflow.com/a/17790708/2079781 – Rickkwa
Dzięki za sugestię, ale nie udało mi się uzyskać tego rozwiązania do pracy z replikacją podaną powyżej. – JacobWuzHere
Nie znalazłem szybkiego rozwiązania, ale możesz rzucić okiem na https: // github.com/gliderlabs/logspout, które "wychwytuje" dane wyjściowe dziennika kontenera i zwykle kieruje je do zdalnego kolektora. (edytuj: hmm, myślę, że działa to również za pośrednictwem hosta Docker, więc może nie być tym, czego szukasz) – schmunk