ข้ามไปเนื้อหาหลัก

วิธีลดขนาด Docker Image จากระดับกิกะไบต์เหลือเมกะไบต์

เทคนิคการลดขนาด Docker Image ลงถึง 90% ด้วย multi-stage builds, base image แบบบาง, การจัดลำดับ layer และ .dockerignore

เรียบเรียงโดย AI
Inewgen
27 Aug 2026ที่มา: Dev.to2 นาทีอ่าน (0 ครั้ง)
แชร์
วิธีลดขนาด Docker Image จากระดับกิกะไบต์เหลือเมกะไบต์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ลดขนาด Docker Image ลงได้ถึง 90% โดยไม่ต้องแก้โค้ดแอป
  • ใช้ multi-stage builds แยกชุดเครื่องมือพัฒนาออกจากรันไทม์
  • จัดลำดับ layer จากส่วนที่ไม่ค่อยเปลี่ยนไปส่วนที่เปลี่ยนบ่อย
  • ใช้ .dockerignore เพื่อตัดไฟล์ขยะและป้องกันข้อมูลรั่วไหล

ขนาดของ Docker Image ไม่ใช่เรื่องความสวยงามแต่ส่งผลต่อประสิทธิภาพโดยตรง ทุกกิกะไบต์ที่เพิ่มขึ้นหมายถึงเวลาดาวน์โหลดที่นานขึ้น พื้นที่จัดเก็บที่เปลือง และช่องโหว่ความปลอดภัยที่มากกว่าเดิม การลดขนาดลงถึง 90% สามารถทำได้โดยใช้ 4 เทคนิคหลักโดยไม่ต้องแก้ไขโค้ดแอปพลิเคชันเลยแม้แต่น้อย

เทคนิคแรกคือ Multi-stage builds ซึ่งเป็นวิธีที่ทรงพลังที่สุด โดยเราจะสร้างแอปด้วยอิมเมจที่มีชุดเครื่องมือครบครัน แต่คัดลอกเฉพาะไฟล์ผลลัพธ์ (artifacts) ไปยังรันไทม์สเตจที่เล็กกว่า ทำให้คอมไพเลอร์และ dev dependencies ไม่ติดไปสู่โปรดักชัน

การใช้ multi-stage builds ช่วยให้ภาพรวมความปลอดภัยดีขึ้นอย่างมาก (Attack Surface ลดลง) เพราะไม่มีเครื่องมือแปลชุดคำสั่งหลงเหลือให้ผู้ไม่หวังดีใช้ประโยชน์ในระบบโปรดักชัน

เทคนิคถัดมาคือ การจัดลำดับ layer และการใช้ .dockerignore Docker จะแคชเลเยอร์จากบนลงล่างและจะล้างแคชทั้งหมดหากมีเลเยอร์ไหนเปลี่ยนแปลง ดังนั้นควรวางคำสั่งจากสิ่งที่มีโอกาสเปลี่ยนแปลงน้อยที่สุดไปยังส่วนที่เปลี่ยนบ่อย เช่น ติดตั้ง dependencies ก่อนแล้วค่อยคัดลอกซอร์สโค้ด

software code terminal developer screen

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

นอกจากนี้ยังต้องใช้ไฟล์ .dockerignore เสมอเพื่อลดขนาด build context ป้องกันไม่ให้ไฟล์ขยะเข้าสู่เลเยอร์ และป้องกันความลับรั่วไหลสู่ประวัติของอิมเมจ เช่น ไฟล์ .env หรือโฟลเดอร์ node_modules

90%ขนาดอิมเมจที่ลดลงได้
1.1 GBขนาดแอป Node.js เดิม
130 MBขนาดแอป Node.js หลังปรับแต่ง

เทคนิคสุดท้ายคือ วัดผลและอย่าคาดเดา ใช้คำสั่ง docker history หรือเครื่องมืออย่าง dive เพื่อดูว่าคำสั่งใดเพิ่มขนาดไฟล์ขึ้นมาเท่าไหร่ และรวมคำสั่งทำความสะอาดไว้ในบรรทัดเดียวกัน เช่น การใช้ apt-get install ร่วมกับ rm -rf /var/lib/apt/lists/* ในคำสั่ง RUN เดียวกัน

ผลลัพธ์ที่ได้จากการปรับแต่งเหล่านี้ทำให้แอปพลิเคชัน Node.js / Next.js จากขนาดเดิม 1.1 GB ลดลงเหลือเพียง 130-180 MB ส่วนแอป Python/Django จาก 950 MB ลดเหลือประมาณ 180 MB และ Go service สามารถลดลงเหลือเพียง 8-15 MB เท่านั้น ส่งผลให้การ deploy รวดเร็วขึ้นและการทำ rollback ทำได้ทันที

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้