ไฟล์บันทึกพร้อมบันทึกจากคอนเทนเนอร์อยู่ที่ไหน


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คุณจะได้รับคอนเทนเนอร์ที่มีอยู่ทั้งหมดพร้อมกับ ID ของพวกเขา คัดลอกรหัสของภาชนะที่คุณต้องการจากนั้นก็วิ่ง/var/lib/docker/containers/ ls | grep <paste the copied docker ID>จากนั้นคุณจะเห็นคอนเทนเนอร์นักเทียบท่า
TheLebDev

cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / container /: ปฏิเสธการอนุญาต sudo cd /var/lib/docker/containers/ sudo: cd: command not found
canbax

2
@Chris ฉันต้องทำdocker ps --no-truncเพื่อดู id ทั้งหมด
Dan Z

97

คุณสามารถดูdocker inspectแต่ละคอนเทนเนอร์เพื่อดูว่าบันทึกของพวกเขาอยู่ที่ไหน:

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

และในกรณีที่คุณกำลังพยายามหาว่าจะจัดการบันทึกขนาดไหนหรือปรับพารามิเตอร์ของการบันทึกเองคุณจะพบสิ่งต่อไปนี้ที่เกี่ยวข้อง

แก้ไขจำนวนเนื้อที่ที่สงวนไว้สำหรับบันทึก

สิ่งนี้นำมาจากคำขอความสามารถในการล้างประวัติบันทึก (ฉบับ 1083) ):

Docker 1.8 และ Docker-compose 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
เวอร์ชันสั้น: นักเทียบท่าตรวจสอบ -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David

12

หากต้องการดูว่าบันทึกของคอนเทนเนอร์แต่ละรายการใช้พื้นที่เท่าใดให้ใช้สิ่งนี้:

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

(คุณอาจต้องมีsudoก่อนls)


ฉันได้รับการอนุญาตถูกปฏิเสธ
Shakedk

1
การเพิ่ม sudo ในตอนท้ายช่วยให้: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk

2

ในการดูไฟล์บันทึกโดยตรงในเวลาน้อยฉันใช้:

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

เรียกใช้เป็น. /viewLogs.sh CONTAINERNAME


2

บน Windows, C:\ProgramData\Docker\containers\<container-id>-json.logตั้งค่าเริ่มต้นคือ:


นี่คือสิ่งที่ใช้ในการพัฒนา Local container! ขอบคุณ - หาข้อมูลนี้ยากมาก
Percy

1

ณ วันที่ 22/8/2561 สามารถดูบันทึกได้ใน:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.