• เมื่อนำแอปพลิเคชันมาสร้างและเผยแพร่เป็น Docker image อาจเกิดปัญหาใช้เวลาในการดาวน์โหลดนานเพราะใช้เบสอิมเมจที่มีขนาดใหญ่ หรืออาจมีปัญหาด้านความปลอดภัยจากการมีข้อมูลสำคัญรวมอยู่ด้วย
  • วิธีทำให้ Docker image เบาและปลอดภัยยิ่งขึ้น
  • ลดขนาดอิมเมจ
    • ยิ่ง Docker image มีขนาดเล็กเท่าไร ความเร็วในการบิลด์และการดีพลอยแอปพลิเคชันก็ยิ่งเร็วขึ้น
    • ทำให้สามารถดีพลอยได้บ่อยและมากขึ้น ช่วยเพิ่มประสิทธิภาพการทำงานของนักพัฒนา
    • วิธีการ
      • เทคนิค multi-stage: สร้างหลายสเตจ บิลด์แยกกันในแต่ละสเตจ แล้วรวมผลลัพธ์ไว้ในอิมเมจที่เบาที่สุด
      • วิธีใช้คำสั่ง RUN ให้น้อยที่สุด: คำสั่ง RUN จะสร้างอิมเมจแยกแต่ละชั้น เพื่อให้มีจำนวนน้อยลงจึงควรรันสคริปต์ให้ได้มากที่สุดในคำสั่ง RUN ครั้งเดียว
    • ลบซอร์สโค้ดที่ไม่จำเป็นด้วย .dockerignore
      • README.md หรือโค้ดทดสอบไม่จำเป็นต่อการบิลด์แอปพลิเคชันจริง
      • ไฟล์ .env ที่มีข้อมูลสำคัญอย่าง API authentication token, ไฟล์ private key แบบ .pem และไดเรกทอรี .git ที่มีประวัติ Git commit ไม่ควรถูกรวมอยู่ใน Docker image
      • เพื่อไม่ให้ไฟล์เหล่านี้รวมอยู่ใน Docker image จึงสร้างไฟล์ .dockerignore
  • สร้างอิมเมจที่ปลอดภัย
    • หาก Docker image มีสิทธิ์ root เมื่อถูกแฮ็กอาจก่อให้เกิดความเสี่ยงสูง
    • วิธีการ
      • ใช้เวอร์ชันอิมเมจแบบระบุชัดเจน: หากไม่ระบุเวอร์ชัน ระบบจะดึงเวอร์ชัน latest มาอัตโนมัติ ทำให้พฤติกรรมการทำงานอาจแตกต่างกันไปตามสถานการณ์
      • ตัดสิทธิ์การเขียนใน /etc: /etc เป็นไดเรกทอรีที่เก็บไฟล์ตั้งค่าระบบและสคริปต์ โดยทั่วไปแอปพลิเคชันไม่จำเป็นต้องแก้ไข จึงควรตัดสิทธิ์การเขียนออก
      • ลบไฟล์ executable ทั้งหมด: ในกรณีของ Go สามารถรันได้ด้วย executable เพียงไฟล์เดียว จึงลบ executable อื่นทั้งหมดที่อาจเป็นความเสี่ยงได้
      • เปลี่ยนไปใช้ผู้ใช้ทั่วไป: บัญชี root สามารถแก้ไขและควบคุมทุกอย่างในระบบได้ จึงควรสร้างผู้ใช้ที่มีสิทธิ์เท่าที่จำเป็น และให้แอปพลิเคชันทำงานด้วยผู้ใช้นั้นเท่านั้น
  • Docker image ที่เบาช่วยเสริมพลังเมื่อทำงานร่วมกับ CI/CD pipeline และแนวทาง Agile
  • Docker image ที่ปลอดภัยช่วยปกป้องธุรกิจและป้องกันความเสี่ยงได้ล่วงหน้า

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น