บทความ 11

ทำไม Production จึงใช้ Container และต้องวางอย่างไรให้ปลอดภัย

เริ่มจากความหมายของ Image, Container, Registry และ Orchestrator ก่อนอธิบายว่าความสม่ำเสมอ การแยกงาน การ Scale และการ Deploy ช่วย Production อย่างไร รวมทั้งข้อจำกัดและ Security ที่ห้ามมองข้าม

17 นาที Developer, DevOps, ผู้ดูแลระบบ และ Tech Lead 2026-07-17
Infographic ภาพรวม
Registryimage:v24
Container 01
Container 02
Container 03
Container 04

ปัญหาที่ Container แก้

ลองเริ่มจากเหตุการณ์ที่คนทำงานพบจริง

คำว่า “เครื่องผมรันได้” เกิดจากสภาพแวดล้อมไม่เหมือนกัน

โปรแกรมไม่ได้มีแค่ source code แต่พึ่ง runtime, system library, package, configuration และคำสั่งเริ่มทำงาน หากเครื่องนักพัฒนา เครื่องทดสอบ และ Production มีองค์ประกอบคนละเวอร์ชัน ผลก็อาจต่างกัน Container จึงบรรจุ application กับ dependency ที่จำเป็นเป็น Image เดียว แล้วเริ่มเป็น instance ที่เรียกว่า Container อย่างไรก็ตาม Container ไม่ได้ทำให้ระบบปลอดภัยหรือทนทานอัตโนมัติ ทีมยังต้องกำหนด network, secret, storage, resource limit, update และผู้รับผิดชอบให้ครบ

คำที่คุณจะเจอในบทความ

แต่ละคำหมายถึงอะไร และเกี่ยวข้องกับระบบตรงไหน

ไม่ต้องจำทั้งหมดในครั้งเดียว อ่านเพื่อให้รู้หน้าที่คร่าว ๆ ก่อน แล้วค่อยกลับมาเทียบเมื่อเจอคำนั้นในเนื้อหา

Image
แพ็กเกจแบบอ่านอย่างเดียวที่รวม application, runtime และ dependency พร้อม metadata วิธีเริ่มโปรแกรม
Container
process ที่รันจาก Image ภายใต้ขอบเขต filesystem, network และ resource ที่กำหนด
Registry
คลังเก็บและกระจาย Image เช่น Amazon ECR โดยควบคุมสิทธิ์และเก็บหลาย version ได้
Orchestrator
ระบบที่จัดวาง Container ตรวจสุขภาพ เพิ่มลดจำนวน และแทน instance ที่เสีย เช่น ECS หรือ Kubernetes
Immutable
แนวคิดไม่แก้ไฟล์ใน Image ที่ Deploy แล้ว แต่สร้าง Image version ใหม่เพื่อให้ตรวจสอบและย้อนกลับได้
Volume
พื้นที่จัดเก็บที่แยกจากอายุ Container ใช้กับข้อมูลที่ต้องอยู่ต่อหลัง Container ถูกแทน
Health Check
การตรวจว่า instance พร้อมรับงานจริง ไม่ใช่เพียง process ยังไม่หยุด
Resource Limit
เพดาน CPU/Memory ที่ป้องกัน Container หนึ่งใช้ทรัพยากรจนกระทบงานอื่น

ถ้าคุณไม่ได้ทำงานสายเทคนิค ให้เริ่มจากส่วนนี้

ทำไม Production จึงใช้ Container และต้องวางอย่างไรให้ปลอดภัย

01

Image คือแม่แบบที่เปลี่ยนไม่ได้ ส่วน Container คือ instance ที่กำลังรันจาก Image

02

Container ช่วยให้ build ครั้งเดียวและนำ artifact เดิมผ่าน Test ไป Production ลดความต่างระหว่างสภาพแวดล้อม

03

Container แชร์ Kernel ของเครื่อง host จึงเบากว่า VM แต่ไม่ใช่ขอบเขตความปลอดภัยที่สมบูรณ์แบบ

04

Production ต้องมี Registry, image scanning, non-root user, resource limit, health check, secret management และ orchestrator ที่เหมาะกับขนาดงาน

ภาพขยายความแบบเคลื่อนไหว

ดูความสัมพันธ์ของแต่ละขั้น ก่อนลงรายละเอียด

เลือกแต่ละขั้นเพื่อดูว่าเกิดอะไรขึ้น ต้องตรวจข้อมูลใด และผลจากขั้นหนึ่งส่งต่อไปยังขั้นถัดไปอย่างไร

ขั้น 01 / 05

01 / เข้าใจหน่วยทำงาน

Container ไม่ใช่เครื่องเสมือนขนาดเล็ก แต่เป็น process ที่ถูกแยกขอบเขต

VM จำลองเครื่องและมี operating system ของตัวเอง ส่วน Container ใช้ Kernel ร่วมกับ host แล้วอาศัย namespace แยกมุมมองของ process, filesystem และ network กับ cgroup ควบคุม resource จึงเริ่มเร็วและวางได้หนาแน่นกว่า แต่ช่องโหว่ใน Kernel หรือสิทธิ์ที่เปิดกว้างอาจกระทบขอบเขตได้ งานที่ต้องแยกความเสี่ยงสูงมากจึงอาจยังใช้ VM หรือ sandbox เพิ่มอีกชั้น ไม่ควรเลือกจากคำว่าใหม่กว่า แต่เลือกตาม threat model และรูปแบบการปฏิบัติงาน

รายละเอียดเชิงลึก

ค่อย ๆ ดูทีละส่วนว่าเกิดอะไรขึ้น และควรเตรียมอย่างไร

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

01 / เข้าใจหน่วยทำงาน

01

Container ไม่ใช่เครื่องเสมือนขนาดเล็ก แต่เป็น process ที่ถูกแยกขอบเขต

VM จำลองเครื่องและมี operating system ของตัวเอง ส่วน Container ใช้ Kernel ร่วมกับ host แล้วอาศัย namespace แยกมุมมองของ process, filesystem และ network กับ cgroup ควบคุม resource จึงเริ่มเร็วและวางได้หนาแน่นกว่า แต่ช่องโหว่ใน Kernel หรือสิทธิ์ที่เปิดกว้างอาจกระทบขอบเขตได้ งานที่ต้องแยกความเสี่ยงสูงมากจึงอาจยังใช้ VM หรือ sandbox เพิ่มอีกชั้น ไม่ควรเลือกจากคำว่าใหม่กว่า แต่เลือกตาม threat model และรูปแบบการปฏิบัติงาน

02 / Artifact เดียว

02

Build หนึ่งครั้ง ทดสอบ Image เดิม แล้ว Promote ไป Production

Pipeline ควรดึง source ที่ระบุ commit, สร้าง Image, รัน automated test, สแกนช่องโหว่, สร้าง SBOM และลงชื่อ artifact ก่อนเก็บใน Registry เมื่อต้อง Deploy ให้เลือก Image ด้วย digest ที่แก้ไม่ได้แทน tag ลอยอย่าง latest แล้ว Promote digest เดิมผ่าน environment การ build ใหม่สำหรับ Production แม้ใช้ source เดิมอาจดึง dependency ต่าง version และทำให้สิ่งที่ทดสอบไม่ใช่สิ่งที่เปิดใช้จริง

  • ใช้ base image ขนาดเล็กและมีเจ้าของ
  • ล็อก dependency version
  • เก็บ SBOM
  • สแกนทั้งตอน build และเมื่อพบ CVE ใหม่
  • มีนโยบายลบ Image ที่หมดอายุ

03 / ลดสิทธิ์

03

Image ที่สะอาดยังไม่พอ หากตอนรันเปิดสิทธิ์และ Network กว้างเกินไป

รันด้วย user ที่ไม่ใช่ root, ทำ filesystem เป็น read-only เมื่อทำได้, ตัด Linux capability ที่ไม่ใช้, ห้าม privileged mode, จำกัด egress ไปเฉพาะปลายทางจำเป็น และรับ Secret ผ่านระบบจัดการ Secret โดยไม่เขียนลง Image หรือ environment dump ที่ถูก log ได้ กำหนด CPU/Memory request และ limit เพื่อให้ orchestrator วางงานถูกและหยุดเหตุ memory leak ไม่ให้ลาม พร้อม patch host และ runtime เพราะ Container ไม่ได้แทนการดูแลระบบพื้นฐาน

ถ้าคุณเป็นคนออกแบบหรือดูแลระบบ

กำหนด policy เป็น code และบังคับใน CI/CD หรือ admission control เพื่อไม่ให้การ review ด้วยคนเป็นแนวป้องกันเพียงชั้นเดียว

04 / แยกข้อมูลออก

04

Container ควรถูกแทนได้ ข้อมูลสำคัญจึงต้องอยู่นอกอายุของ Container

อย่าเก็บไฟล์ผู้ใช้หรือฐานข้อมูลสำคัญไว้ใน writable layer เพราะข้อมูลจะหายเมื่อ instance ถูกแทน ใช้ managed database, object storage หรือ volume ที่มี backup ตามชนิดข้อมูล แยก subnet และ security group ให้ application ติดต่อเฉพาะ database/queue ที่ต้องใช้ ไม่ publish port ภายในทั้งหมดสู่อินเทอร์เน็ต และใช้ TLS ระหว่าง service เมื่อความเสี่ยงต้องการ การตั้งชื่อ service และ discovery ควรคงที่แม้ instance เปลี่ยน IP

05 / เลือกระดับที่เหมาะ

05

Docker Compose, ECS และ Kubernetes แก้ปัญหาคนละระดับ

Compose เหมาะกับ local development, test environment หรือระบบเล็กที่ยอมรับการดูแลเครื่องเดียวได้ ECS/Fargate ลดงานดูแล control plane และเหมาะกับทีมที่ต้องการ container orchestration บน AWS โดยไม่สร้าง platform ซับซ้อน Kubernetes ให้ความยืดหยุ่นและ ecosystem สูงแต่มีต้นทุนด้านความรู้ ความปลอดภัย การ upgrade และการแก้ incident ไม่ควรเลือก Kubernetes เพียงเพื่อให้ดูเป็นมาตรฐาน หากทีมยังไม่มีคนรับผิดชอบ platform การใช้ managed service ที่ง่ายกว่ามักปลอดภัยและคุมต้นทุนได้ดีกว่า

ก่อนนำไปใช้ ลองตรวจทีละข้อนี้

01

ใช้ maintained minimal base image

02

รันเป็น non-root

03

ล็อก Image ด้วย digest

04

สแกน CVE และสร้าง SBOM

05

ไม่ฝัง Secret ใน Image

06

ตั้ง CPU/Memory limit

07

กำหนด readiness/liveness check

08

เก็บข้อมูลถาวรนอก Container

09

จำกัด ingress/egress

10

ทดสอบ rolling deploy และ rollback

แหล่งอ้างอิง

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

ผู้ตรวจทาน
SIS Platform Engineering
ตรวจทานล่าสุด
2026-07-17

อ่านแล้วอยากรู้ว่าระบบของคุณควรเริ่มตรวจตรงไหน?

ลองใช้เครื่องมือประเมินเบื้องต้น หรือเล่าให้ทีม SIS ฟังว่าระบบทำอะไร ใครใช้งาน และตอนนี้กังวลเรื่องใด เราจะช่วยเรียงสิ่งที่ควรตรวจให้เป็นลำดับ

กลับไป Knowledge Base