कंटेनर से लॉग के साथ लॉग फ़ाइल कहां है?


117

मैं कई कंटेनरों का उपयोग कर रहा हूं docker-compose। मैं कमांड के साथ एप्लिकेशन लॉग देख सकता हूं docker-compose logs। हालांकि मैं इसे उदाहरण के लिए कहीं भेजने के लिए कच्चे लॉग फ़ाइल तक पहुंचना चाहूंगा? यह कहा स्थित है? मुझे लगता है कि यह प्रत्येक कंटेनर (कंटेनर के अंदर?) के लिए अलग लॉग है, लेकिन मुझे यह कहां मिल सकता है?

जवाबों:


191

एक कंटेनर के लॉग में पाया जा सकता है:

/var/lib/docker/containers/<container id>/<container id>-json.log

(यदि आप डिफ़ॉल्ट लॉग प्रारूप का उपयोग करते हैं जो कि json है)


3
बहुत सारे फोल्डर हैं जैसे 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff। कैसे पता करें कि किसी विशेष कंटेनर के लिए कौन सा फ़ोल्डर देखना है?
प्रवीण श्रीपति

3
@PraveenSripati कंटेनर चलाने के लिए कंटेनर आईडी को पहले कॉलम में दिखाया गया है यदि आप करते हैंdocker ps
CS

1
@PraveenSripati लिखते हैं docker ps, आपको अपने सभी उपलब्ध कंटेनरों को उनकी आईडी के साथ मिलेगा। अपने वांछित कंटेनर की आईडी कॉपी करें, फिर /var/lib/docker/containers/रन से ls | grep <paste the copied docker ID>। तब आप उस
डॉकटर

cd /var/lib/docker/containers/ -बैश: सीडी: / var / lib / docker / कंटेनर्स /: अनुमति से इनकार किया sudo cd /var/lib/docker/containers/ sudo: cd: कमांड नहीं मिला
canbax

2
@ क्रिस मुझे docker ps --no-truncपूरी आईडी देखने के लिए करना था
Dan Z

97

आप docker inspectप्रत्येक कंटेनर को देख सकते हैं कि उनके लॉग कहाँ हैं:

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

और, यदि आप यह पता लगाने की कोशिश कर रहे हैं कि लॉग अपने सामूहिक आकार को प्रबंधित करने के लिए थे, या लॉगिंग के मापदंडों को स्वयं समायोजित करें तो आपको निम्नलिखित प्रासंगिक मिलेंगे।

लॉग के लिए आरक्षित स्थान की मात्रा को ठीक करना

यह लॉग इतिहास (समस्या 1083) को साफ़ करने की क्षमता के लिए अनुरोध से लिया गया है :

डॉकर 1.8 और डॉकटर-कंपोज़ 1.4 में पहले से मौजूद लॉग आकार को सीमित करने के लिए एक विधि मौजूद है डॉकर कंपोज़ लॉग ड्राइवर और लॉग-ऑप्ट अधिकतम-आकार :

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

संस्करण '2' की फ़ाइलों को बनाने वाले में, वाक्यविन्यास थोड़ा बदल गया है:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(ध्यान दें कि दोनों वाक्यविन्यासों में, संख्याओं को स्ट्रिंग के रूप में व्यक्त किया जाता है)

संभव मुद्दा docker-compose logsसमाप्ति के साथ नहीं

  • समस्या 1866 : logsयदि कंटेनर पहले से ही बंद है तो कमांड बाहर नहीं निकलती है

1
लघु संस्करण: docker निरीक्षण -f '{{.LogPath}}' $ INSTANCE_ID
डेविड

12

यह देखने के लिए कि प्रत्येक कंटेनर का लॉग कितना स्थान ले रहा है, इसका उपयोग करें:

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(आपको sudoपहले की आवश्यकता हो सकती है ls)।


मुझे एक अनुमति से वंचित रखा गया है।
शकेदक

1
अंत में docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
सूडो को

2

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

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

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


2

विंडोज पर, डिफ़ॉल्ट स्थान है C:\ProgramData\Docker\containers\<container-id>-json.log:।


यह एक है जब विकास के लिए एक स्थानीय कंटेनर चल रहा है! धन्यवाद - इस जानकारी को पाना बहुत कठिन था
Percy

1

8/22/2018 के अनुसार, लॉग में पाया जा सकता है:

/data/docker/containers/<container id>/<container id>-json.log

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