ก่อนจะมาเป็น Container บน Linux หรือ Windows
เมื่อเรียก Container ขอให้นึกถึงตู้ Shipping Container ที่ใช้บรรจุสินค้าสำหรับขนส่ง คุณสมบัติของมันคือ
1. บรรจุสินค้าลงในตู้ แต่ละตู้มีของต่างๆ ของกิน ของใช้ ตู้ใครตู้มัน มันมีความเป็นส่วนตัวหรือ Isolation
2. การขนส่งมีตู้เยอะแยะถูกนำไปใส่ในเรือลำเดียวกันหรือ Share กัน
3. ผู้ฝากส่งสินค้า มีหน้าเพียงบรรจุสินค้าลงตู้ แล้วบอกว่าจะส่งไปไหน
4. เจ้าของเรือ บริหารการใช้ทรัพยากร บนเรือ
(ภาพนี้เป็นของสายการเดินเรือ Mitsui O.S.K.Lines จาก http://www.mol.co.jp/en/services/container/img/ph-01.jpg)
เมื่อกลับมาเรื่อง Linux หรือ Windows ถ้ามันมาทำหน้าที่เป็น “เจ้าของเรือ” มีหน้าเตรียม Resource ให้ผู้ใช้นำงานมาใส่ใน Container สิ่งของนั้นก็คือ Application นั่นเอง
รู้จักจุดร่วมและจุดต่างของ Container กับ Virtualization
เรารู้จักว่า Server virtualization เช่น Hyper-V ที่เป็นการ Share Hardware ด้วยการสร้าง Virtual Machine เมื่อมายุคของ Container มัน Share กันคนละแบบ ดูภาพด้านล่าง พอสรุปง่ายๆ ได้ดังนี้
Server Virtualization | – เจ้าของ Server จะแบ่ง CPU, RAM, Disk และ Network ให้ Virtual Machine
– ผู้ใช้ Virtual Machine ต้องไปลง Operating System |
Container | – เจ้าของ Server จะลงเตรียม OS (Windows/Linux) ไว้ ผู้ใช้งาน Container ใช้ OS share กับ Host
– ผู้ใช้ต้องเลือกว่าเจ้าของ Server คนไหนมี OS Version ที่ต้องการ ก็ไปขอใช้บริการ Container เจ้านั้น |
– ในภาพด้านล่างซ้ายมือคือ Server Virtualization ปกติ และขวามือคือ Container ในภาพเป็นตัวอย่าง Software ที่จัดการ Container ตัวหนึ่งที่ได้รับความนิยมมากชื่อ Docker ในภาพมันทำงานบน Linux ที่ฐานของ Docker เราเห็นว่ามันคือ Linux ด้านล่างที่เป็น Hardware ยังเลือกได้อีกว่าจะใช้ Virtual หรือ Physical ได้ด้วย
ความเป็นมาของ Container
ปกติ vm360degree มักจะพูดถึงเทคโนโลยีของ Microsoft แต่พอเป็นเรื่อง Container มันเกิดจาก Linux ขอสรุปเหตการณ์สำคัญในตารางด้านล่าง ซึ่งทำให้เห็นพัฒนาการอย่างต่อเนื่องของ Container ว่ามีกันมานานหลายตัวแล้วบน Linux จนมีความสมบูรณ์เลยทีเดียว รวมถึงตัวหนึ่งในนั้นคือ Docker ก็ได้รับความนิยมเป็นอย่างมาก Docker เกิดขึ้นในปี 2013 จนปัจจุบัน Cloud Service Provider อย่าง Amazon EC2, Microsoft Azure ก็ใช้งาน Docker ได้ การเล่าเรื่อง Container ตั้งแต่นี้จะเป็นเรื่อง Docker
ปี | เหตุการณ์ |
2000 | ก้าวแรกของ Container – FreeBSD Jailed ได้ติดตั้งบน FreeBSD |
2001 | มีการสร้าง Container บน Linux ใน VServer project เป็นครั้งแรกบน Linux ที่แยก Container เป็น unit (Virtual Private Server) แต่ละ unit จะคิดว่ามันมีเครื่อง server เป็นของมันเอง |
2004 | เกิด Solaris Zone |
2005 | เกิด Open Virtuzzo (OpenVZ) |
2006 | – Cpuset – เปลี่ยนชื่อ control groups หรือ cgroups – Kernal namespaces, user namespaces |
2008 | Linux Container Project (LXC) |
2013 | Docker (dotCloud) release เป็น March 2013 |
2014 | Release of LXC
Security SELinux and Seccomp Docker ใช้ libcontainer ด้วยภาษา Go แทน LXC |
2015 | ได้มีการประกาศว่า Docker ได้รับการสนับจาก RedHat, IBM, Google, Cisco System และ Amadeus IT Group |
2016 | Microsoft ใส่ Container ใน Windows Server 2016 |
Container ไม่เหมือน Virtual Machine – ปรับความคิดก่อนใช้งาน
กฏข้อแรกข้อเดียวของ vm360degree สำหรับ Container คือ คุณไม่สามารถนำความรู้ของ Virtualization มาใช้กับ Container มันไม่เกี่ยวกัน ถ้าถามผมว่า Container ใช้ทำอะไร ผมก็ตอบไม่ได้ แต่เมื่อคุณใช้ไปสักระยะก็จะได้คำตอบไปพร้อมๆ กัน เรามาค้นคว้าหาคำตอบไปด้วยกัน ผ่านประสบการณ์ ในการดูแลระบบของเรา ตามขั้นตอนการทำงานหรือ Use Case ต่อไปนี้
1. สร้าง Container พื้นฐาน บน Amazon AWS
2. ติดตั้ง Application บน Container, การจัดการ image, สร้าง docker file
3. จัดการ Resource เช่น network, RAM, CPU
4. เรียนรู้ Windows Container
5. Container กับ DevOps
Reference
http://rhelblog.redhat.com/2015/08/28/the-history-of-containers/