ข้ามไปเนื้อหาหลัก
Docker· ~13 นาที

Best Practices และ Security

ทำ image/คอนเทนเนอร์ให้ปลอดภัยตามหลักที่ควรทำ

เปรียบเทียบให้เห็นภาพ

ความปลอดภัย container เหมือนล็อกบ้านหลายชั้น — ไม่ให้ใครถือกุญแจ master (ไม่รันเป็น root), ตรวจของก่อนเข้า (สแกน image), และไม่เก็บของมีค่าไว้หน้าบ้าน (ไม่ฝัง secret ใน image)

เช็กลิสต์ที่ควรทำ

  • อย่ารันเป็น root — ใส่ USER ใน Dockerfile ให้รันด้วย user ธรรมดา ลดความเสียหายถ้าถูกเจาะ
  • pin เวอร์ชัน — ระบุ tag/digest ชัดเจน ไม่ใช้ latest (ทบทวนจากบท Registry)
  • อย่าฝัง secret ใน image — รหัสผ่าน/key ส่งผ่าน env หรือ secret ตอน run ไม่ใช่ COPY เข้า image
  • สแกนช่องโหว่ — ใช้ docker scout หรือ Trivy สแกน image ก่อน push
  • .dockerignore + image เล็ก — ลดของไม่จำเป็น = ลดผิวโจมตี
  • ใช้ base image ทางการ/เชื่อถือได้ และอัปเดตสม่ำเสมอ
FROM node:20-alpine
WORKDIR /app
COPY --chown=node:node . .
RUN npm ci --omit=dev
USER node                 # สลับไปรันด้วย user "node" (ไม่ใช่ root)
CMD ["node", "server.js"]
ตัวอย่าง: รันด้วย non-root user
docker scout cves myapp:1.0     # เครื่องมือในตัว Docker
# หรือ Trivy (นิยมมาก, ฟรี)
trivy image myapp:1.0
สแกนช่องโหว่ก่อนขึ้น production

สรุป Key Takeaways

  • อย่ารันเป็น root (ใส่ USER) · pin เวอร์ชัน · อย่าฝัง secret ใน image
  • สแกนช่องโหว่ด้วย docker scout / Trivy ก่อน push
  • secret ที่ COPY เข้า image ค้างใน layer เดิม ลบไม่ออก — ห้ามทำ
อ่านจบแล้วอย่าลืมทำเครื่องหมาย