Software Container คืออะไร
Software Container เป็น concept ของการสร้างสภาพแวดล้อมเฉพาะให้ซอฟต์แวร์ทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่นบนระบบปฏิบัติการเดียวกัน เราสามารถเอา Container ไปรันในคอมพิวเตอร์หรือ Server เครื่องไหนก็ยังทำงานได้เหมือนเดิม โปรแกรมใน Container ยังทำงานได้ปกติไม่ผิดเพี้ยนจากเดิม
Docker คืออะไร
จากประโยชน์ของ Software Container ที่เราเห็นจึงได้เกิด Engine ที่ชื่อว่า Docker เพื่อเป็นตัวจัดการ Container ซึ่งเป็นตัวที่ใช้งานได้ง่ายกว่าตัวอื่นๆ ทำให้ได้รับความนิยมในวงกว้าง
Docker คือ Software Container ที่ถูกพัฒนาขึ้นมาให้สามารถการจัดการ Container ได้ง่าย ทำให้เราสามารถห่อระบบของเราแล้วเอาไปรันที่ไหนก็ได้ ที่มี Docker ติดตั้งไว้ หรือก็คือ Virtual Machine แบบนึงเหมือนกับที่เราใช้ VMware, VirtualBox หรืออะไรพวกนี้ แต่ Docker ต่างจาก VM ตัวอื่น ๆ ตรงที่ VM จะจำลองมันทั้ง OS เลย แต่ Docker สร้าง Container เพื่อจำลอง Environment สำหรับ 1 Service เท่านั้น
Docker ต้องใช้กับ Linux
Docker นั้นใช้ฟีเจอร์บางอย่างของ Linux ครับ นั่นหมายความว่าเครื่องของเราจะต้องติดตั้ง Linux ก่อน ถึงจะรัน Docker ได้ แต่หากใครใช้ Windows หรือ Mac OS X อยู่ แล้วไม่อยากจะเปลี่ยนไปใช้ Linux เราอาจจะใช้ตัวช่วยอย่าง Vagrant หรือ Boot2Docker ในการจำลอง Linux ขึ้นมาก็ได้เช่นกันครับ
ข้อดีของ Docker
1. เร็วกว่า VM มากๆ
ถ้าใครที่ใช้ VM มาก่อน จะพบว่ามันเป็นอะไรที่ ช้าและเสียเวลามาก ๆ กว่าจะโหลดขึ้น แต่ Docker นั่นเร็วมาก ๆ เพราะว่า มันใช้ OS, CPU และ Memory ร่วมกันกับ Host OS ทำให้มันเบาหวิวเลย ต่างกับ VM ที่ใช้ทุกอย่างแยกกันหมด และการจำลองทั้ง OS ก็ทำให้มีบางอย่างที่เราไม่ได้ใช้ แต่ก็ต้องรัน ทำให้เราเสียทรัพยากรไปฟรี ๆ
2. มีระบบ Registry
ระบบนี้จะช่วยให้เราสามารถติดตั้งโปรแกรมหรือ Environment ที่เราต้องการได้เร็วขึ้น เพราะว่ามันมีคนทำไว้ให้เราแล้ว โดยเราแค่เพียงโหลด Image ตัวนั้นมา และติดตั้ง ก็สามารถใช้ Environment นั้นได้เลย ซึ่งทาง Docker ก็จะมีสิ่งที่เรียกว่า Docker Hub อยู่ โดยเราสามารถ Push ตัว Image ที่เราสร้างไว้ขึ้นไป หรือเราจะไป Pull Image ที่คนอื่นสร้างไว้มาใช้ก็ได้ และตอนนี้ใน Docker Hub ก็มี Image มากมายทั้ง Official และที่ทำเองให้เราเลือกใช้ได้มากมาย
3.สะดวก
บางคนอาจจะจำเป็นต้องใช้ Environment ที่มีโปรแกรมเยอะมาก ๆ หรือติดตั้งโปรแกรมที่ทำยาก ๆ เช่น อยากได้ Elasticsearch เป็นต้น เมื่อก่อน เราก็ต้องสร้าง VM ขึ้นมาและค่อยติดตั้ง Elasticsearch ซึ่งกินเวลามาก แต่ด้วย Image สำเร็จรูปทำให้เราสามารถติดตั้ง โปรแกรม หรือตั้งค่า Environment ที่เราต้องการได้ภายในเวลาไม่กี่วินาที และเพียงแค่ไม่กี่คำสั่งเท่านั้น