ลด 50% ทุกแพ็กเกจ เวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลืออีก 9 นาที
เครื่องมือสำหรับนักพัฒนาและ DevOps

คู่มือการใช้งาน Docker Compose Logs: วิธีตรวจสอบและจัดการ

เอดา เลิฟกูด By เอดา เลิฟกูด อ่าน 9 นาที อัปเดตเมื่อ 23 ก.พ. 2568
docker logs

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

Docker ช่วยให้คุณแพ็กเกจแอปพลิเคชันลงใน container ขนาดเล็กและรันบนระบบปฏิบัติการส่วนใหญ่โดยไม่ต้องพึ่งพา dependency ใดๆ ลองนึกภาพว่าคุณใส่แอปแต่ละตัวลงในกล่องที่เรียกว่า Container ซึ่งทำงานได้เหมือนกันทุกที่ การเข้าใจเรื่อง container เป็นพื้นฐานสำคัญก่อนจะเรียนรู้ Docker compose ดังนั้นแนะนำให้อ่านบทความของเราเกี่ยวกับ ประโยชน์ของ containerization

Docker Compose มาพร้อมกับ Docker และทำให้การพัฒนาแอปพลิเคชันแบบหลาย container ง่ายขึ้น ด้วยการเชื่อมต่อ service, network และ storage เข้าหากัน log ของ Docker container และ Docker Compose ช่วยให้นักพัฒนาติดตามพฤติกรรมของแต่ละ container ได้อย่างชัดเจน

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

ความสำคัญของ Docker Compose Logs

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

ในฐานะ Developer หรือ System Admin คุณจำเป็นต้องรู้ว่าเกิดอะไรขึ้นทั้งภายในและระหว่างแอปพลิเคชันแบบ multi-chain Docker Compose logs คือเครื่องมือที่ตอบโจทย์ตรงนี้ แล้วทำไม log เหล่านี้ถึงจำเป็น?

  • การแก้ไขปัญหาและการดีบัก

ควรตรวจสอบ docker logs เมื่อแอปพลิเคชันทำงานผิดปกติหรือเกิด error Docker logs คือแหล่งข้อมูลแรกที่ใช้ติดตามปัญหาได้ การวิเคราะห์ docker logs ช่วยให้นักพัฒนาระบุต้นตอของปัญหาได้อย่างแม่นยำ ไม่ว่าจะเป็น bug ในโค้ด การตั้งค่าที่ผิดพลาด หรือปัญหาด้านทรัพยากร

  • การตรวจสอบสถานะของแอปพลิเคชัน

การติดตาม application log อย่างสม่ำเสมอช่วยให้เข้าใจสุขภาพโดยรวมของ service ได้ Log สามารถแสดงสัญญาณเตือนล่วงหน้า เช่น error ที่เกิดซ้ำหรือการตอบสนองที่ช้าลง การสังเกตรูปแบบเหล่านี้ตั้งแต่เนิ่นๆ ช่วยป้องกันปัญหาที่อาจเกิดขึ้นในอนาคตได้

  • การตรวจสอบและการปฏิบัติตามข้อกำหนด

สำหรับแอปพลิเคชันที่ต้องปฏิบัติตามมาตรฐานที่กำหนด docker logs คือหลักฐานชิ้นแรกที่แสดงให้เห็นว่าแอปพลิเคชันปฏิบัติตามแนวทางที่กำหนดไว้หรือไม่ นอกจากนี้ log ยังมีบทบาทสำคัญในการตรวจสอบกิจกรรมที่ได้รับอนุญาตและที่ไม่ได้รับอนุญาตด้วย

  • การปรับปรุงและหาประสิทธิภาพ

Log เป็นทรัพยากรที่มีคุณค่าสำหรับการปรับแต่งซอฟต์แวร์ เพราะให้ข้อมูลด้านประสิทธิภาพโดยตรง ตัวอย่างเช่น นักพัฒนาสามารถระบุ query ที่ทำงานช้า code path ที่ไม่มีประสิทธิภาพ หรือทรัพยากรที่ยังถูกใช้งานไม่เต็มที่

สร้าง Docker Recipe: การ deploy Web Server

ในส่วนนี้ เราจะสร้าง Docker recipe ไปพร้อมกัน ก่อนจะเริ่มต้นกับ Docker Compose logs เราต้องสร้างอะไรบางอย่างขึ้นมาก่อน ลองเริ่มด้วยการ deploy web server กัน สร้าง Dockerfile ได้เลยโดยรันคำสั่ง nano ไฟล์ Dockerfile ในโฟลเดอร์ที่ต้องการบน VPS ด้วยเนื้อหาดังต่อไปนี้ แล้วบันทึกไฟล์

 

FROM nginx:alpine
RUN rm /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

แต่ละบรรทัดของโค้ดนี้ทำอะไรบ้าง?

  • เริ่มต้นด้วย base image ที่มีขนาดเล็ก nginx:alpine.
  • ถัดมา ลบหน้า welcome เริ่มต้นของ Nginx ออก
  • จากนั้น กำหนดให้ web server รับการเชื่อมต่อบน port 80.
  • สุดท้าย รัน Nginx server ด้วย CMD.

เมื่อ 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.
  • บรรทัดถัดไป เราตั้งชื่อ service ว่า "web“.
  • จากนั้น สั่งให้ Docker build web server จากโฟลเดอร์ปัจจุบัน
  • เชื่อม port 8080 บน host เข้ากับ port 80 ใน container เพื่อให้ web server สามารถรับการเชื่อมต่อได้
  • ส่วนท้าย การตั้งค่า volumes จะ map index.html จาก disk ของ host ไปยัง container ภายหลัง คุณสามารถสร้างไฟล์ index.html โดยใส่เนื้อหาอะไรก็ได้ที่ต้องการ และวางไว้ในตำแหน่งที่ Dockerfile และ docker-compose.yml ไฟล์มีอยู่แล้ว

ถึงเวลารัน Docker container ด้วย Docker Compose แล้ว เพียงรันคำสั่ง docker-compose up.

รัน Docker container ด้วย Docker Compose

เมื่อรันคำสั่ง docker-compose up Docker จะดาวน์โหลด image ที่จำเป็นจากอินเทอร์เน็ต และกำหนดค่าตามที่ระบุไว้ในไฟล์คอนฟิก

ตรวจสอบว่า web server ทำงานอยู่หรือไม่ โดยเปิดเบราว์เซอร์ พิมพ์ IP address ของ VPS แล้วเข้าถึง port 8080

หน้าเว็บที่รันบน Docker

อีกทางเลือกหนึ่ง คุณสามารถใช้ docker-compose up -d เพื่อรัน container ในโหมด background

การเข้าถึง Log ด้วย Docker Compose

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

การเข้าถึง Log ด้วย Docker Compose

บางครั้งคุณอาจต้องการดู log แบบ real-time ขณะที่ระบบกำลังสร้างอยู่ เพียงเพิ่ม -f ต่อท้ายคำสั่งก่อนหน้า แล้วรัน docker-compose logs -f.

การเข้าถึง Log ด้วย Docker Compose

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

การเข้าถึง Log ด้วย Docker Compose

Docker Logs ยังสามารถแสดงเฉพาะรายการล่าสุดได้ด้วย ให้ใช้ docker-compose logs –tail 10 เพื่อดู log 10 รายการล่าสุด ฟีเจอร์ tail ของ Docker Compose logs และ docker logs tail มีประโยชน์มากเมื่อต้องการตรวจสอบกิจกรรมล่าสุดโดยไม่ต้องเลื่อนดู log ทั้งหมด

การเข้าถึง log ด้วย Docker Compose

จุดประสงค์หลักของ Docker Compose คือการสร้างแอปพลิเคชันแบบ multi-container ดังนั้นคุณอาจต้องอ่าน log เฉพาะของ service ที่ต้องการ ให้ใช้ docker-compose logs -f SERVICEI need the English text you'd like me to translate to Thai. You've provided ", remembering to replace" but this appears to be incomplete. Please provide the full English text you'd like translated. SERVICE โดยแทนที่ SERVICE ด้วยชื่อ service จริงของคุณ

การเข้าถึง log ด้วย Docker

การบันทึกบันทึก Docker

ระบบนิเวศของ Docker อาจมีความซับซ้อนมากขึ้นสำหรับแอปพลิเคชันแบบ converged โดยเฉพาะในสภาพแวดล้อมขนาดใหญ่ ดังที่กล่าวไปแล้วว่าแต่ละ container จะสร้าง log ของตัวเอง ระบบที่รับผิดชอบในการรับ ส่ง และจัดเก็บ log นั้นเรียกว่า Logging Driver โดยค่าเริ่มต้น Docker ใช้ไฟล์ JSON สำหรับ Logging Driver แต่ยังรองรับ driver อื่น ๆ อีกหลายตัว ซึ่งแต่ละตัวมีข้อดีและข้อเสียแตกต่างกัน

ทุกคนเห็นพ้องกันว่า log มีความสำคัญในหลายด้าน ทั้งการแก้ปัญหาและการปรับปรุงประสิทธิภาพระบบ ด้านล่างนี้เราจะพูดถึงสองแง่มุมหลักของการใช้ container logs:

  • การตรวจสอบ: หน้าที่หลักของ log คือการ monitoring โดยทั่วไปแล้ว log จะสะท้อนสุขภาพโดยรวมของ containerized application ของเรา
  • การแก้ไขปัญหา: เมื่อเกิดปัญหา log จะช่วยให้เราตรวจพบข้อผิดพลาดของ application ได้

เนื่องจาก docker logs และ docker compose logs ถูกสร้างขึ้นอย่างต่อเนื่อง อาจทำให้พื้นที่เก็บข้อมูล VPS เต็มได้ ดังนั้นเราจึงต้องมีแนวทางจัดการพื้นที่ดิสก์ที่เรียกว่า Log Rotation Policy สำหรับการสร้างและใช้งาน policy นี้ ให้กลับไปที่ docker-compose.yml ไฟล์และเปิดขึ้นมา จากนั้นเพิ่ม logging section พร้อม configuration ดังนี้:

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-size และ max-file ได้ตามต้องการ

รูปแบบการส่ง Docker Logs

ใน environment ที่ซับซ้อนกว่า วิศวกรอาจเลือกใช้ logging model อื่นแทน JSON driver เริ่มต้น เช่น Syslog, fluentd หรืออื่นๆ อย่างไรก็ตาม ควรจำไว้ว่า JSON-file driver นั้นเหมาะสมกับ logging scenario ส่วนใหญ่ และอาจไม่จำเป็นต้องเปลี่ยนจาก mode เริ่มต้น

ขึ้นอยู่กับสถาปัตยกรรมของ application หรือข้อกำหนดขององค์กร คุณอาจจำเป็นต้องใช้โซลูชันการจัดการ log แบบรวมศูนย์ที่เรียกว่า Log Aggregator ซึ่งได้แก่ Elasticsearch, Logstash, Kibana และอื่นๆ บริการเหล่านี้ถูกออกแบบมาเพื่อรับ log จากหลายแหล่ง แล้วรวบรวม จัดเก็บ และวิเคราะห์ทั้งหมดไว้ในที่เดียว

ในทางกลับกัน ควรจัดเก็บ log โดยใช้โซลูชันที่คุ้มค่ากว่า ลองนึกถึงกรณีที่ VPS ของคุณใช้ storage ความเร็วสูงและราคาแพง การนำ resource เหล่านั้นมาเก็บ log ที่อาจใช้แค่อ้างอิงในอนาคตอาจไม่คุ้มค่าเลย

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

การโฮสต์ Linux VPS

เลือกแพ็กเกจ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับโฮสต์เว็บไซต์หรือรีโมทเดสก์ท็อป ในราคาที่คุ้มค่าที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่สูงขึ้น และติดตั้งบนฮาร์ดแวร์ที่ทรงพลังพร้อมพื้นที่จัดเก็บ NVMe SSD เพื่อความเร็วสูงสุด

อ่านเพิ่มเติม

สรุป

การเข้าใจ Docker Compose logs เป็นสิ่งสำคัญ ช่วยให้คุณจัดการและ debug Docker application ได้อย่างมีประสิทธิภาพ การเรียนรู้วิธีเข้าถึงและติดตาม log จะช่วยแก้ปัญหาได้เร็วขึ้น และปรับปรุงทั้งประสิทธิภาพและความปลอดภัยของ app ไม่ว่าจะกำลังพัฒนาหรือดูแลระบบอยู่ Docker Compose logs เป็นเครื่องมือที่ขาดไม่ได้สำหรับการจัดการ container

คำถามที่พบบ่อย

กรอง Docker Compose logs ตามเวลาได้อย่างไร?

Docker Compose ไม่มีวิธีกรอง log ตามเวลาโดยตรง อย่างไรก็ตาม คุณสามารถกรอง log ได้โดย pipe ผ่าน grep เพื่อจับคู่รูปแบบ ตัวอย่างเช่น ใช้คำสั่ง: docker-compose logs | grep "2023-04-06" โดยแทนที่ "2023-04-06" ด้วยวันที่หรือรูปแบบเวลาที่ต้องการค้นหา

หยุด container ที่เปิดด้วย Docker Compose ได้อย่างไร?

ไปที่ directory ที่มีไฟล์ docker-compose.yml แล้วรันคำสั่ง docker-compose down

ลบไฟล์ log ด้วยตนเองได้อย่างไร?

แทนที่จะตั้งค่า log rotation ใน docker-compose.yml คุณสามารถลบไฟล์ Docker JSON log ได้โดยตรงจาก /var/lib/docker/containers/<container_id>/ ก่อนดำเนินการ ควรระบุ Docker container ID ด้วยคำสั่ง docker ps -a

ดู Docker logs แบบ tail ได้ไหม? 

ได้เลย คุณใช้คำสั่ง docker logs ร่วมกับ option -f หรือ --follow เพื่อ tail Docker logs แบบ real-time ได้

แชร์

บทความอื่นจากบล็อก

อ่านต่อ

กล่องโลหะที่ล้อมรอบด้วยโดมโครงลวดสีฟ้าเรืองแสง พร้อมชื่อบทความและโลโก้ Cloudzy บนพื้นหลังสีน้ำเงินเข้ม
เครื่องมือสำหรับนักพัฒนาและ DevOps

ข้อผิดพลาดด้านความปลอดภัย Docker ที่ควรหลีกเลี่ยงในปี 2026

คุณอาจรัน Docker ใน production ได้หลายเดือนโดยไม่พบปัญหาใดๆ Container ทำงาน แอปตอบสนอง ทุกอย่างดูปกติ จนกระทั่ง port ที่เปิดทิ้งไว้หนึ่งช่อง หรือ permission ที่ตั้งค่าผิดพลาดหนึ่งจุด ก็สร้าง

เรกซา ไซรัสเรกซา ไซรัส อ่าน 15 นาที
โครงสาม มิติลูกบาศก์เรืองแสงสีน้ำเงินแทน Docker containers พร้อมข้อความ 'Portainer vs Yacht: Which Docker UI Should You Choose' และโลโก้ Cloudzy
เครื่องมือสำหรับนักพัฒนาและ DevOps

Portainer vs Yacht: ควรเลือก Docker UI ตัวไหนในปี 2026?

การจัดการ Docker containers ผ่าน CLI เหมาะกับ setup ขนาดเล็ก แต่เมื่อจำนวน container เพิ่มขึ้น การติดตาม state, log และอัปเดตด้วยตนเองก็เริ่มเกิดข้อผิดพลาด

เรกซา ไซรัสเรกซา ไซรัส อ่าน 13 นาที
เครื่องมือ Continuous Integration
เครื่องมือสำหรับนักพัฒนาและ DevOps

เครื่องมือ CI/CD ที่ดีที่สุดสำหรับ DevOps ในปี 2026

วงการพัฒนาซอฟต์แวร์เปลี่ยนแปลงเร็วกว่าที่เคยเป็นมา ถ้าไม่อยากตามไม่ทัน ควรนำแนวทาง DevOps และ Agile มาใช้

เอดา เลิฟกูดเอดา เลิฟกูด อ่าน 11 นาที

พร้อม Deploy แล้วหรือยัง? เริ่มต้นที่ $2.48/เดือน

Cloud อิสระ ให้บริการมาตั้งแต่ปี 2008. AMD EPYC, NVMe, 40 Gbps. คืนเงินภายใน 14 วัน