นักเทียบท่าดูบันทึกของคอนเทนเนอร์ที่ออก


106

มีวิธีใดบ้างที่ฉันสามารถดูบันทึกของคอนเทนเนอร์ที่ออกไปแล้ว

ฉันสามารถรับ ID คอนเทนเนอร์ของคอนเทนเนอร์ที่ออกโดยใช้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"ชื่อสแต็กถูกระบุไว้ที่จุดเริ่มต้นของคำสั่ง
x-yuri

19

docker logs --tail=50 <container id> สำหรับห้าสิบบรรทัดที่ผ่านมา - มีประโยชน์เมื่อคอนเทนเนอร์ของคุณทำงานเป็นเวลานาน


1
@ Whitefret ฉันได้อัปเดตคำตอบพร้อมคำแนะนำของคุณแล้ว คำตอบเดิมจะดึงบันทึกทั้งหมดลงและวางไว้ในเครื่องจะใช้เวลานานมากกับบันทึกขนาดใหญ่และเครือข่ายที่ช้า
Matthew

ในตัวจัดการการแจ้งเตือนฉันเห็นข้อความเหล่านี้มากมาย แต่ไม่แน่ใจว่าสิ่งเหล่านี้เกี่ยวข้องกับการแจ้งเตือนหรือไม่:
Arnav Bose

11

คุณสามารถใช้คำสั่งด้านล่างเพื่อคัดลอกบันทึกแม้กระทั่งจากคอนเทนเนอร์ที่ออก:

docker cp container_name :path_of_file_in_container destination_path_locally

เช่น:

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 / File มักจะอยู่ภายใต้การเป็นเจ้าของรูท

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