Windows Container 1: ยกระดับ Virtual Server Admin ให้ใช้งาน Container Technology ด้วยการเรียนรู้ Docker และ Windows Container

ก่อนจะมาเป็น Container บน Linux หรือ Windows

เมื่อเรียก Container ขอให้นึกถึงตู้ Shipping Container ที่ใช้บรรจุสินค้าสำหรับขนส่ง คุณสมบัติของมันคือ

1. บรรจุสินค้าลงในตู้ แต่ละตู้มีของต่างๆ ของกิน ของใช้ ตู้ใครตู้มัน มันมีความเป็นส่วนตัวหรือ Isolation

2. การขนส่งมีตู้เยอะแยะถูกนำไปใส่ในเรือลำเดียวกันหรือ Share กัน

3. ผู้ฝากส่งสินค้า มีหน้าเพียงบรรจุสินค้าลงตู้ แล้วบอกว่าจะส่งไปไหน

4. เจ้าของเรือ บริหารการใช้ทรัพยากร บนเรือ

clip_image002

(ภาพนี้เป็นของสายการเดินเรือ 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 ได้ด้วย

image

ความเป็นมาของ 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/

http://www.slideshare.net/jpetazzo/anatomy-of-a-container-namespaces-cgroups-some-filesystem-magic-linuxcon

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s