Docker

หลายคนที่เริ่มศึกษาเกี่ยวกับ Container คงเคยได้ยินมาบ้างแล้ว ในบทความนี้จะมาพูดถึงจุดเริ่มต้นของ Docker สำหรับคนที่พึ่งจะเริ่มศึกษาและสนใจเกี่ยวกับเทคโนโลยีนี้

Docker เป็น Open Platform ที่ใช้สำหรับการพัฒนาและ running applications, Docker สามารถแยก application ของคุณจาก infrastructure และยังสามารถเคลื่อนย้าย software ได้อย่างรวดเร็ว และด้วยความสามารถของ Docker คุณสามารถจัดการ infrastructure ของคุณได้พร้อมกับ application ในเวลาเดียวกัน ด้วยความสามารถที่ docker นั้นสามารถเคลื่อนย้ายและ deploy ได้ง่ายและเร็วทำให้ลดระยะเวลาในระหว่างการเขียน code และการ running production

Docker มีมาตั้งแต่เมื่อไหร่?

เทคโนโลยี Docker container เปิดตัวใช้งานในปี 2013 ในฐานะ Docker Engine รูปแบบ open source โดยการใช้ประโยชน์จากแนวคิดด้านการคำนวณโดยอิงจาก container ที่มีอยู่และในโลกของ Linux เราจะรู้จักกันในชื่อของ cgroups และ namespaces

Docker Containers ทำงานได้หลากหลาย platform ไม่ว่าจะบน Linux, Windows, Data center หรือ Cloud, Serverless 

เทคโนโลยีของ Docker มีลักษณะเฉพาะเนื่องจากมุ่งเน้นไปที่ข้อกำหนดของนักพัฒนาและผู้ให้บริการระบบเพื่อแยก Application ออกจากโครงสร้างพื้นฐาน จากความสำเร็จในโลกของ Linux จึงได้มีการผลักดันให้มีการพัฒนาร่วมมือกับ Microsoft ที่นำ Docker container และฟังก์ชันการทำงานมาสู่ Windows Server (บางครั้งเรียกว่า Docker Windows container) ด้วยความสามารถจาก Docker ทำให้ทางผู้ให้บริการ Cloud ได้รับประโยชน์จาก Docker สำหรับการให้บริการ IaaS แบบ Container นอกจากนี้ Framework แบบ Serverless ก็ได้ใช้เทคโนโลยี Docker Container เข้ามาใช้งานด้วยเช่นกัน

Docker Platform

Docker ให้ความสามารถในการจัด package และเรียกใช้งาน application ในสภาพแวดล้อมที่แยกกันที่เรียกว่า Container และ Docker ยังสามารถช่วยให้คุณสามารถแยกใช้ Container จำนวนมากพร้อมกันในหนึ่ง Host ได้ เนื่องจาก container มีน้ำหนักเบาและไม่ได้ใช้ Hypervisor แต่ Docker จะทำงานโดยตรงภายใน kernel ของเครื่องเครื่อง Host เลย ซึ่งนั่นแปลว่าคุณสามารถเรียกใช้งาน container ได้มากกว่าจำนวนเครื่อง VM ในกรณีที่มี Hardware ชนิดเดียวกัน และคุณยังสามารถใช้งาน Docker บน VM ได้อีกเช่นเดียวกัน

ก่อนอื่น เรามาทำความรู้จักก่อนว่า Container และ Image ที่พูดถึงกันคืออะไร และ Docker ต่างกับ Virtualization ยังไงบ้าง

Containers เสมือนเป็นนามธรรมที่ทำงานใน Application Layer ที่มี package Code และการอ้างอิงเข้าด้วยกันหลาย container และสามารถทำงานบนเครื่องเดียวกันและแชร์ Kernel OS กับ Containers อื่น ๆ โดยแต่ละ Containers จะทำงานแยก Processes กันใน user space ของแต่ละ user การใช้งาน Service containers นั้นใช้พื้นที่น้อยกว่า VM (โดยทั่วไปแล้ว Image และ containers จะมีขนาดที่ไม่ใหญ่มาก) และสามารถรองรับ Application ได้มากกว่าและต้องการทรัพยากรการทำงานที่น้อยกว่าการการติดตั้ง OS บน  Virtual Machine

​            Image เป็น template ที่เป็นแบบ  read-only ที่จะนำไปใช้สร้าง Docker container หรืออีกในหนึ่งก็คือ Image เป็นองค์ประกอบที่จะนำไปใช้สร้าง container  โดยภายในจะประกอบไปด้วย Application  ที่ติดตั้งไว้ใช้งานสำหรับ service นั้น ๆ โดยนักพัฒนาก็สามารถสร้าง Image ไว้ใช้งานเองได้ด้วย

Virtual Machine (VMs) เป็นนามธรรมของ Physical Hardware ที่เปลี่ยน Server หนึ่งเครื่องให้เป็น Server เสมือนจำนวนมากโดยมี Hypervisor ช่วยให้สามารถใช้งาน VM ได้ทีละหลาย ๆ เครื่องทำงานได้ภายใน  Server เครื่องเดียว และในแต่ละ VM ก็จะประกอบด้วย Operating Systems (OS) ที่ใช้ทำงาน Service และ Application ต่าง ๆ

แล้ว Container ต่างจาก VM ยังไง ?

Container และ Virtual Machine มีประโยชน์ในการแยกและจัดสรรทรัพยากรที่คล้ายกัน แต่ทำงานแตกต่างกันเนื่องจาก Container จะทำงานบนระบบปฏิบัติการทั่วไปและมีการจัดสรรทรัพยากรโดยแบ่งจาก Container ที่ใช้งานในแต่ละ Container จากภาพจะเห็นได้ว่า Docker สามารถ run Application ได้มากและประหยัดทรัพยากรใช้งาน ซึ่งแตกต่างจาก Virtual Machine (VMs) ที่แต่ละตัวจะทำงานและถูกจัดสรรทรัพยากรโดยผ่านตัวกลางที่เรียกว่า Hypervisor โดย Hypervisor จะมีหน้าที่ติดต่อกับ Hardware โดยตรง ซึ่งทำให้ VM มีขนาดที่ใหญ่กว่า Container ซึ่งจะมีขนาดพื้นที่เล็กและสามารถทำงานได้หลากหลาย Platform ทำให้สะดวกและมีความคล่องตัวมากกว่า

โครงสร้างการทำงานของ Docker

Docker นั้นมีโครงสร้างการทำงานแบบ Client-Server ซึ่งในโครงสร้างของ Docker จะมี Docker Daemon ที่เป็นเหมือน Server ที่รอรับการร้องขอ API จาก Docker-CLI ที่เป็นดั่ง Client ซึ่งทั้งคู่มีการสื่อสารกันผ่านทาง REST API บน UNIX socket หรือ network interface เพื่อรับการเก็บ Object ต่าง ๆ ที่ประกอบไปด้วย Images, Container, Network และ Data Volume ที่ใช้งานของ Client Docker

แล้วเราจะใช้งาน Docker แบบไหนได้บ้าง?

รูปแบบการนำ Container ไปใช้งานนั้นมีหลายแบบมากแต่ที่พบเจอได้บ่อย ๆ คือการนำ Application มาเพิ่มไว้ใน Container อย่าง NGINX, PHP หรือ Node.js แล้วนำเหล่า Application เหล่านี้มาทำการสร้างเป็น Container แล้วทำการ running application เหล่านี้ผ่าน docker ก็จะสามารถช่วยลดการใช้งานทรัพยากรที่ใช้งานใน Service เหล่านี้และสามารถย้าย Container ต่าง ๆ ไปทำงานบน server อื่นหรือบน Cloud ได้อีกด้วย ทั้งยังช่วยลดขั้นตอนการย้าย Service และ Application จำนวนมากได้เพียง Copy กลุ่ม Container ที่ทำงานอยู่ปัจจุบันไปทำงานที่ server ปลายทางแล้วทำการ running กลุ่ม Container เหล่านั้นเพื่อใช้งานก็จะสามารถใช้งาน Service ได้อย่างต่อเนื่อง

Share:

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on linkedin
LinkedIn

Share:

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on pinterest
Pinterest

Network365 Co,Ltd. website uses cookies to give you the very best experience. Cookies also help us understand how our website is being used. If you continue without changing these settings on your browser, you consent to our Cookie Privacy Policy.