- เมื่อนำแอปพลิเคชันมาสร้างและเผยแพร่เป็น 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 ที่ปลอดภัยช่วยปกป้องธุรกิจและป้องกันความเสี่ยงได้ล่วงหน้า
ยังไม่มีความคิดเห็น