डॉकटर एक आउट कंटेनर के लॉग को देखता है


106

क्या किसी भी तरह से मैं एक कंटेनर के लॉग को देख सकता हूं जो बाहर निकल गया है?

मैं बाहर निकलने वाले कंटेनर की कंटेनर आईडी का उपयोग कर सकता docker ps -aहूं, लेकिन मैं जानना चाहता हूं कि जब यह चल रहा था तो क्या हुआ।


जवाबों:


111

का उपयोग करें docker logs। यह बंद कंटेनरों के लिए भी काम करता है और कंटेनर की मुख्य प्रक्रिया के पूरे STDOUT और STDERR धाराओं को पकड़ता है:

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World

4
एक डॉक स्टैक के लिए जहां यह हर कुछ सेकंड को पुनरारंभ करता है: stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"कमांड की शुरुआत में स्टैक नाम निर्दिष्ट किया गया है।
एक्स-यूरी

19

docker logs --tail=50 <container id> अंतिम पचास पंक्तियों के लिए - उपयोगी जब आपका कंटेनर लंबे समय से चल रहा हो।


1
@Whitefret, मैंने आपके सुझाव के साथ उत्तर को अपडेट कर दिया है। मूल उत्तर पूरे लॉग को नीचे खींच देगा और इसे स्थानीय रूप से पूंछ देगा, एक बड़े लॉग और एक धीमे नेटवर्क के साथ बहुत लंबा समय लगेगा
मैथ्यू

अलर्ट मैनेजर में मैं इन संदेशों को बहुत देखता हूं लेकिन यकीन नहीं होता कि ये अलर्ट से संबंधित हैं:
अर्नव बोस

11

आप बाहर के कंटेनर से भी लॉग को कॉपी करने के लिए कमांड का उपयोग कर सकते हैं:

docker cp container_name :path_of_file_in_container डेस्टिनेशन_पठ_लोक

उदाहरण के लिए:

docker cp sravya:/tmp/report /root/mylog

7

सीधे बाहर निकलने वाले कंटेनर के लॉगफाइल को कम देखने के लिए, फ़ाइल के अंत तक स्क्रॉल किया गया, मैं उपयोग करता हूं:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G

./viewLogs.sh CONTAINERNAME के ​​रूप में चलाएं

इस पद्धति में docker logsआधारित दृष्टिकोणों से अधिक लाभ है , कि स्ट्रीम के बजाय फ़ाइल को सीधे खोला जाता है।

sudo आवश्यक है, क्योंकि LogPath / फ़ाइल आमतौर पर रूट के स्वामित्व में है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.