คุณต้องการทราบว่าแอป Docker กำลังทำอะไรอยู่เบื้องหลังหรือไม่? มาเรียนรู้เพิ่มเติมเกี่ยวกับหน้าต่างลับที่เรียกว่าบันทึกในคอนเทนเนอร์ของคุณซึ่งจะแสดงทุกการเคลื่อนไหวที่พวกเขาทำ บันทึกมีประโยชน์อย่างยิ่งสำหรับการแก้ไขปัญหา แต่ก่อนที่เราจะเริ่มต้น เรามาดูกันก่อนว่า Docker และ Docker Compose คืออะไร
Docker ช่วยให้คุณสามารถจัดแพ็คเกจแอปพลิเคชันของคุณลงในคอนเทนเนอร์ขนาดเล็กและรันบนระบบปฏิบัติการส่วนใหญ่โดยไม่ต้องพึ่งพาใดๆ เหมือนกับการวางแอปของคุณไว้ในกล่องเล็กๆ ที่เรียกว่าคอนเทนเนอร์ ซึ่งสามารถทำงานในลักษณะเดียวกันได้ทุกที่ การรู้เกี่ยวกับคอนเทนเนอร์ถือเป็นข้อกำหนดเบื้องต้นที่สำคัญในการเรียนรู้เกี่ยวกับการเขียนของ Docker ดังนั้นฉันขอแนะนำให้คุณอ่านบล็อกของเราก่อน ประโยชน์ของการบรรจุภาชนะ
Docker Compose มาพร้อมกับ Docker และทำให้การพัฒนาแอปพลิเคชันคอนเทนเนอร์หลายรายการง่ายขึ้นโดยการเชื่อมโยงบริการ เครือข่าย และพื้นที่จัดเก็บข้อมูลเข้าด้วยกัน บันทึกคอนเทนเนอร์ Docker และการบันทึก Docker Compose ช่วยให้นักพัฒนาเห็นว่าแต่ละคอนเทนเนอร์ทำอะไรได้บ้าง
คุณสงสัยเกี่ยวกับ Docker Compose Logs หรือไม่? คุณอยู่ในสถานที่ที่เหมาะสม บล็อกนี้จะอธิบายพื้นฐานของบันทึก Docker Compose และครอบคลุมรายละเอียดขั้นสูงเพิ่มเติม เรียนรู้วิธีใช้ประโยชน์สูงสุดจาก Docker Compose สำหรับโปรเจ็กต์ของคุณ
ความสำคัญของบันทึกการเขียนนักเทียบท่า
ลองนึกภาพนักพัฒนาเปิดแอปด้วย Docker แต่ข้ามการตั้งค่าบันทึกของ Docker ในตอนแรกทุกอย่างดูเหมือนจะดี แต่ในไม่ช้า ผู้ใช้ก็พบข้อผิดพลาด และแอปก็ทำงานช้าลง หากไม่มีบันทึกนักเทียบท่า นักพัฒนาจะไม่สามารถเห็นสิ่งผิดปกติภายในคอนเทนเนอร์นักเทียบท่าได้ บันทึก Docker Compose เป็นเหมือนบันทึกโดยละเอียดของคอนเทนเนอร์เหล่านี้ พวกเขาบันทึกทุกรายละเอียดของสิ่งที่เกิดขึ้น ซึ่งเป็นสิ่งสำคัญในการค้นหาและแก้ไขปัญหาในภายหลัง
ในฐานะนักพัฒนาหรือผู้ดูแลระบบ คุณต้องเข้าใจว่าเกิดอะไรขึ้นภายในและระหว่างแอปพลิเคชันหลายสายโซ่ นี่คือจุดที่บันทึกของ Docker Compose ทำหน้าที่เป็นเครื่องมือที่มีประโยชน์ แล้วเหตุใดบันทึกเหล่านี้จึงจำเป็น?
-
การแก้ไขปัญหาและการดีบัก
ตรวจสอบบันทึกนักเทียบท่าเมื่อแอปพลิเคชันทำงานไม่ถูกต้องหรือพบข้อผิดพลาด บันทึกนักเทียบท่าเป็นแหล่งข้อมูลแรกที่คุณสามารถดูเพื่อติดตามปัญหา ด้วยการตรวจสอบบันทึกนักเทียบท่า นักพัฒนาสามารถระบุสาเหตุที่แท้จริงและแหล่งที่มาของปัญหา ไม่ว่าจะเป็นจุดบกพร่องในโค้ด การกำหนดค่าที่ไม่ถูกต้อง หรือปัญหาทรัพยากร
-
การตรวจสอบความสมบูรณ์ของแอปพลิเคชัน
การตรวจสอบบันทึกแอปพลิเคชันเป็นประจำช่วยให้เข้าใจสภาพโดยรวมของบริการ บันทึกสามารถเปิดเผยสัญญาณเตือนล่วงหน้า เช่น ข้อผิดพลาดซ้ำๆ และการตอบสนองที่ช้า การสังเกตรูปแบบเหล่านี้ตั้งแต่เนิ่นๆ สามารถป้องกันปัญหาที่อาจเกิดขึ้นได้ในอนาคต
-
การตรวจสอบและการปฏิบัติตามกฎระเบียบ
สำหรับแอปพลิเคชันที่ต้องปฏิบัติตามมาตรฐานเฉพาะ บันทึกนักเทียบท่าถือเป็นหลักฐานชิ้นแรกที่แสดงว่าแอปพลิเคชันปฏิบัติตามหลักเกณฑ์หรือไม่ บันทึกเหล่านี้ยังมีบทบาทสำคัญในการตรวจสอบกิจกรรมที่ได้รับอนุญาตหรือไม่ได้รับอนุญาต
-
การเพิ่มประสิทธิภาพ
บันทึกเป็นทรัพยากรที่มีคุณค่าสำหรับการเพิ่มประสิทธิภาพซอฟต์แวร์โดยการให้ข้อมูลประสิทธิภาพ ตัวอย่างเช่น นักพัฒนาสามารถระบุการสืบค้นที่ทำงานช้า เส้นทางโค้ดที่ไม่มีประสิทธิภาพ หรือทรัพยากรที่ใช้งานน้อยเกินไป
การสร้างสูตรนักเทียบท่า: การปรับใช้เว็บเซิร์ฟเวอร์
ในส่วนนี้ เราจะอธิบายการสร้างสูตร Docker กัน ก่อนอื่น เราต้องสร้างบางสิ่งเพื่อเริ่มต้นการเดินทางด้วยบันทึก Docker Compose มาปรับใช้เว็บเซิร์ฟเวอร์เพื่อจุดประสงค์นี้กัน หากต้องการสร้าง Dockerfile เพียงเรียกใช้ นาโน ด็อคเกอร์ไฟล์ ในโฟลเดอร์ที่ต้องการบน VPS ของคุณโดยมีเนื้อหาดังต่อไปนี้ จากนั้นจึงบันทึก:
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
แล้วโค้ดแต่ละบรรทัดนี้มีไว้ทำอะไร?
- เราเริ่มต้นด้วยฐานที่มีน้ำหนักเบา nginx:อัลไพน์.
- ต่อไปเราจะล้างหน้าต้อนรับเริ่มต้นของ Nginx
- จากนั้นเราตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์กำลังฟังพอร์ตอยู่ 80.
- ในที่สุดเราก็รันเซิร์ฟเวอร์ Nginx ด้วย ซีเอ็มดี.
ตอนนี้ Dockerfile ของเราพร้อมแล้ว เราจะไปยังขั้นตอนถัดไปซึ่งก็คือการสร้างไฟล์ Docker Compose นี่คือโครงสร้างของ docker-compose.yml ไฟล์:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
มาแยกย่อยเพื่อทำความเข้าใจแต่ละส่วนโดยสมบูรณ์:
- เรากำลังใช้เวอร์ชัน 3.8.
- บรรทัดถัดไปเราตั้งชื่อบริการของเราว่า “เว็บ“.
- จากนั้นเราสั่งให้ Docker สร้างเว็บเซิร์ฟเวอร์ของเราจากโฟลเดอร์ปัจจุบัน
- เราเชื่อมโยงพอร์ต 8080 บนโฮสต์ของเรากับพอร์ต 80 ในคอนเทนเนอร์ของเราเพื่อให้เว็บเซิร์ฟเวอร์ของเราสามารถสร้างการเชื่อมต่อได้
- ในที่สุด แมปการกำหนดค่าวอลุ่ม index.html จากดิสก์โฮสต์ไปยังคอนเทนเนอร์ หลังจากนั้น คุณสามารถสร้างไฟล์ index.html ไฟล์ที่มีเนื้อหาใด ๆ ที่คุณต้องการและวางไว้ที่ Dockerfile และ docker-compose.yml มีไฟล์อยู่
ตอนนี้ได้เวลารันคอนเทนเนอร์ Docker ด้วย Docker Compose แล้ว พูดง่ายๆ ก็คือ เราวิ่ง นักเทียบท่า-เขียนขึ้น.

เมื่อคุณเรียกใช้ นักเทียบท่า-เขียนขึ้น คำสั่ง Docker จะดาวน์โหลดอิมเมจที่ต้องการจากอินเทอร์เน็ตและกำหนดค่าตามคำแนะนำในไฟล์การกำหนดค่าของเรา
หากต้องการตรวจสอบว่าเว็บเซิร์ฟเวอร์ของเราทำงานอยู่หรือไม่ ให้เปิดเว็บเบราว์เซอร์ของคุณ พิมพ์ที่อยู่ IP VPS ของคุณ และขอการเข้าถึงพอร์ต 8080

คุณสามารถใช้ได้ นักเทียบท่าเขียนขึ้น -d เพื่อเรียกใช้คอนเทนเนอร์ในเบื้องหลัง
การเข้าถึงบันทึกด้วย Docker Compose
ตอนนี้เว็บเซิร์ฟเวอร์ของเราพร้อม เปิดใช้งาน และทำงานแล้ว กำลังสร้างบันทึกและจัดเก็บข้อมูลนี้ไว้เพื่อใช้ในภายหลัง การเข้าถึงบันทึกการเขียนนักเทียบท่าของคุณถือเป็นสิ่งสำคัญสำหรับการแก้ไขปัญหาและการตรวจสอบ แต่เราจะอ่านบันทึกเหล่านี้ได้อย่างไร นี่คือที่ บันทึกนักเทียบท่าเขียน มีประโยชน์ ตรวจสอบให้แน่ใจว่าคุณอยู่ในโฟลเดอร์ที่มีการกำหนดค่าอยู่ และเรียกใช้คำสั่งนั้น

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

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

Docker Logs ยังสามารถแสดงรายการล่าสุดได้ เพื่อให้บรรลุเป้าหมายนี้ ให้ใช้ บันทึกนักเทียบท่าเขียน –tail 10 เพื่อดูรายการบันทึกล่าสุด 10 รายการ นักเทียบท่าเขียนส่วนท้ายของบันทึก และในทำนองเดียวกันส่วนท้ายของบันทึกนักเทียบท่าก็มีประโยชน์อย่างยิ่งเมื่อคุณต้องการตรวจสอบกิจกรรมล่าสุดอย่างรวดเร็วโดยไม่ต้องเลื่อนดูประวัติบันทึกทั้งหมด

วัตถุประสงค์หลักของการใช้ Docker Compose คือการสร้างแอปพลิเคชันแบบหลายคอนเทนเนอร์ ดังนั้น คุณอาจต้องอ่านบันทึกเฉพาะสำหรับบริการที่ต้องการ หากต้องการทำเช่นนั้น ให้ใช้ บันทึกนักเทียบท่าเขียน -f บริการ, จำต้องเปลี่ยน บริการ ด้วยชื่อบริการจริงของคุณ

การบันทึกนักเทียบท่า
ระบบนิเวศของ Docker อาจมีความซับซ้อนมากขึ้นสำหรับแอปพลิเคชันแบบหลอมรวม โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมขนาดใหญ่ ดังที่เราทราบแล้วว่าแต่ละคอนเทนเนอร์จะสร้างบันทึก ดังนั้นกลไกที่เรียกว่า Logging Driver มีหน้าที่รับ จัดส่ง และจัดเก็บบันทึก ตามค่าเริ่มต้น Docker จะใช้ไฟล์ JSON สำหรับ Logging Driver แต่ยังรองรับไดรเวอร์อื่นๆ อีกมากมาย ซึ่งแต่ละไดรเวอร์ก็มีข้อดีและข้อเสียต่างกันไป
ทุกคนยอมรับว่าบันทึกมีความสำคัญในด้านต่างๆ รวมถึงการแก้ไขปัญหาและการเพิ่มประสิทธิภาพของระบบ ด้านล่างนี้ เราจะกล่าวถึงประเด็นหลักสองประการในการใช้บันทึกคอนเทนเนอร์:
- การตรวจสอบ: วัตถุประสงค์หลักของบันทึกคือการตรวจสอบ โดยทั่วไปแล้วจะเปิดเผยประสิทธิภาพโดยรวมของแอปพลิเคชันในคอนเทนเนอร์ของเรา
- การแก้ไขปัญหา: ในกรณีที่เกิดปัญหา บันทึกจะช่วยเราตรวจจับข้อบกพร่องของแอปพลิเคชัน
เนื่องจากบันทึกนักเทียบท่าและบันทึกการเขียนนักเทียบท่าถูกสร้างขึ้นอย่างต่อเนื่อง บันทึกเหล่านี้จึงอาจเติมเต็มพื้นที่จัดเก็บข้อมูล VPS ทั้งหมด ดังนั้นเราจึงจำเป็นต้องมีกลยุทธ์ในการจัดการพื้นที่ดิสก์ที่เรียกว่านโยบายการหมุนเวียนบันทึก หากต้องการสร้างและใช้นโยบายนี้ ให้กลับไปที่ docker-compose.yml ไฟล์และเปิดมัน จากนั้น เพิ่มส่วนการบันทึกด้วยการกำหนดค่าด้านล่าง:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.htm:/usr/share/nginx/html/index.htm logging: driver: json-file options: max-size: "200k" max-file: "10"
คุณสามารถปรับเปลี่ยนได้อย่างต่อเนื่อง ขนาดสูงสุด และ max-ไฟล์ ตามความต้องการของคุณ
โมเดลการนำส่งบันทึกนักเทียบท่า
วิศวกรอาจเลือกใช้โมเดลการบันทึกที่แตกต่างกันในสภาพแวดล้อมขั้นสูงมากกว่าไดรเวอร์ JSON เริ่มต้น เช่น Syslog, fluentd และอื่นๆ อย่างไรก็ตาม สิ่งสำคัญคือต้องจำไว้ว่าไดรเวอร์ไฟล์ JSON เหมาะสำหรับสถานการณ์การบันทึกส่วนใหญ่ และอาจไม่จำเป็นต้องเบี่ยงเบนไปจากโหมดเริ่มต้น
คุณอาจถูกบังคับให้ใช้โซลูชันการบันทึกส่วนกลางที่เรียกว่า Log Aggregators ทั้งนี้ขึ้นอยู่กับสถาปัตยกรรมแอปพลิเคชันของคุณหรือข้อกำหนดขององค์กร บริการเหล่านี้ได้แก่ การค้นหาแบบยืดหยุ่น, Logstash, Kibana ฯลฯ ได้รับการออกแบบมาเพื่อรับบันทึกจากแหล่งต่างๆ และรวบรวม จัดเก็บ และวิเคราะห์ไว้ในตำแหน่งศูนย์กลางแห่งเดียว
ในทางกลับกัน คุณควรจัดเก็บบันทึกของคุณโดยใช้โซลูชันการจัดเก็บข้อมูลที่คุ้มค่ากว่า พิจารณาสถานการณ์ที่ VPS ของคุณใช้พื้นที่จัดเก็บข้อมูลความเร็วสูงและมีราคาแพง การใช้ทรัพยากรระดับพรีเมียมเพื่อจัดเก็บบันทึกที่คุณอาจจำเป็นต้องใช้สำหรับการอ้างอิงในอนาคตอาจไม่ประหยัด
มีโมเดลการบันทึกมากมาย แต่ละแบบมีข้อดีและข้อเสีย การประเมินแต่ละรุ่นอย่างรอบคอบและเลือกรุ่นหนึ่งตามความต้องการเฉพาะของคุณถือเป็นสิ่งสำคัญ
รับ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับการโฮสต์เว็บไซต์หรือเดสก์ท็อประยะไกลของคุณ ในราคาที่ถูกที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่เพิ่มขึ้น และทำงานบนฮาร์ดแวร์อันทรงพลังพร้อมที่เก็บข้อมูล NVMe SSD เพื่อเพิ่มความเร็ว
อ่านเพิ่มเติมบทสรุป
การทำความเข้าใจบันทึก Docker Compose ถือเป็นกุญแจสำคัญ ช่วยจัดการและแก้ไขข้อบกพร่องแอปพลิเคชัน Docker ของคุณได้ดี การเรียนรู้ที่จะเข้าถึงและติดตามบันทึกเหล่านี้ช่วยปรับปรุงการแก้ปัญหาและเพิ่มประสิทธิภาพและความปลอดภัยของแอปของคุณ ไม่ว่าจะพัฒนาหรือดูแลระบบ การใช้บันทึกของ Docker Compose ก็ถือเป็นสิ่งสำคัญ พวกเขาทำให้แน่ใจว่าการจัดการคอนเทนเนอร์ของคุณมีประสิทธิภาพ
คำถามที่พบบ่อย
ฉันจะกรองบันทึก Docker Compose ตามเวลาได้อย่างไร
Docker Compose ไม่มีวิธีการกรองบันทึกตามเวลาโดยตรง อย่างไรก็ตาม คุณสามารถกรองบันทึกได้โดยการไพพ์ผ่าน grep เพื่อจับคู่รูปแบบ ตัวอย่างเช่น คุณสามารถใช้: บันทึกนักเทียบท่าเขียน | grep “2023-04-06” แทนที่ “2023-04-06” ด้วยรูปแบบวันที่หรือเวลาเฉพาะที่คุณกำลังค้นหา
จะหยุดคอนเทนเนอร์ที่เริ่มต้นด้วย Docker Compose ได้อย่างไร
นำทางไปยังไดเร็กทอรีที่มีไฟล์ docker-compose.yml และรันคำสั่ง docker-compose down
จะลบไฟล์บันทึกด้วยตนเองได้อย่างไร?
แทนที่จะกำหนดค่าการหมุนเวียนบันทึกในไฟล์ docker-compose.yml คุณสามารถลบไฟล์บันทึก Docker JSON ออกจาก /var/lib/docker/containers/<container_id>/ ได้ด้วยตนเอง ก่อนที่จะดำเนินการดังกล่าว คุณควรระบุ ID คอนเทนเนอร์ Docker ด้วย docker ps -a
คุณสามารถติดตามบันทึกของ Docker ได้หรือไม่
ใช่คุณสามารถ คุณควรใช้คำสั่ง docker logs พร้อมกับตัวเลือก -f หรือ –follow นี่จะเป็นการติดตามบันทึกของ Docker ให้กับคุณ