มารู้จัก Docker ว่าคืออะไร
แพลตฟอร์มซอฟต์แวร์ที่ช่วยให้คุณสร้าง ทดสอบ และติดตั้งแอปพลิเคชันใช้จริงได้อย่างรวดเร็ว Docker จะบรรจุซอฟต์แวร์ลงไปในหน่วยที่เป็นมาตรฐานเรียกว่าคอนเทนเนอร์ ซึ่งจะมีทุกสิ่งที่ซอฟต์แวร์ต้องใช้ในการเรียกใช้งาน ซึ่งรวมถึงไลบรารี เครื่องมือสำหรับระบบ โค้ด และรันไทม์ เมื่อใช้ Docker คุณจะสามารถปรับใช้และปรับขนาดแอปพลิเคชันลงในทุกสภาพแวดล้อมและทราบว่าโค้ดของคุณจะเรียกใช้ได้อย่างอย่างรวดเร็ว
ส่วนประกอบหลักของ Docker
Docker Image คือไฟล์แม่แบบที่บรรจุโค้ดแอปพลิเคชัน, ไลบรารี, การตั้งค่า, และไฟล์ที่จำเป็นทั้งหมดเพื่อรันแอปพลิเคชันนั้น ๆ
Docker Container คือสภาพแวดล้อมที่แยกออกมาอย่างสมบูรณ์จากระบบปฏิบัติการหลัก โดยจะถูกสร้างขึ้นจาก Docker Image และสามารถรันได้บนเครื่องคอมพิวเตอร์ต่าง ๆ โดยไม่เกิดปัญหาความเข้ากันได้
Docker Engine คือโปรแกรมหลักที่ติดตั้งอยู่บนเครื่องเซิร์ฟเวอร์หรือคอมพิวเตอร์ส่วนตัว มีหน้าที่จัดการและรัน Docker Containers และ Docker Images
ประโยชน์ของ Docker
ความสม่ำเสมอของสภาพแวดล้อม ช่วยให้นักพัฒนาและทีมปฏิบัติการสามารถทำงานในสภาพแวดล้อมที่เหมือนกัน ลดปัญหา "บนเครื่องของฉันมันรันได้นะ"
ความรวดเร็วในการจัดส่ง สามารถแพ็คเกจแอปพลิเคชันพร้อมกับทุกสิ่งที่จำเป็นลงใน Container ทำให้การย้ายและติดตั้งแอปพลิเคชันง่ายและรวดเร็ว
การใช้ทรัพยากรอย่างมีประสิทธิภาพ Container ใช้ทรัพยากรน้อยกว่า Virtual Machine (VM) เพราะไม่ได้จำลองระบบปฏิบัติการทั้งหมด ทำให้สามารถรัน Container ได้หลายตัวบนเครื่องเดียว
ความสามารถในการพกพา (Portability) Container ที่สร้างขึ้นสามารถรันบนระบบปฏิบัติการที่รองรับ Docker ได้ทุกที่ เช่น บนเครื่องนักพัฒนา, เซิร์ฟเวอร์ในองค์กร หรือบน Cloud Platform
Virtual Machine (VM) และ Container เป็นเทคโนโลยีที่ใช้ในการสร้างสภาพแวดล้อมที่แยกจากกันเพื่อรันแอปพลิเคชัน แต่มีสถาปัตยกรรมและการทำงานที่แตกต่างกันอย่างชัดเจน
เปรียบเทียบ VM และ Docker Container
Virtual Machine (VM)
- Virtualizes Hardware: VM เป็นการจำลอง เครื่องคอมพิวเตอร์ทั้งเครื่อง รวมถึงฮาร์ดแวร์เสมือน เช่น CPU, RAM, และ Storage
- Guest OS: แต่ละ VM จะต้องติดตั้ง ระบบปฏิบัติการของตัวเอง (Guest OS)
- Hypervisor: VM จะทำงานบนเลเยอร์ที่เรียกว่า Hypervisor ซึ่งเป็นซอฟต์แวร์ที่ทำหน้าที่จัดการและแบ่งปันทรัพยากรฮาร์ดแวร์ให้แต่ละ VM
Container
- Virtualizes OS: Container เป็นการจำลอง ระดับระบบปฏิบัติการ (OS) โดยจะแชร์ Kernel ของระบบปฏิบัติการหลัก (Host OS) ร่วมกัน
- No Guest OS: Container ไม่จำเป็นต้องมี Guest OS เป็นของตัวเอง ทำให้มีขนาดเล็กและใช้ทรัพยากรน้อยกว่า
- Container Engine: Container จะทำงานบนซอฟต์แวร์ที่เรียกว่า Container Engine (เช่น Docker) ซึ่งทำหน้าที่จัดการการสร้างและการรัน Container