Press "Enter" to skip to content

Docker คืออะไร ?

ก่อนที่เราจะรู้จัก docker ได้นั้น เราต้องมาทำความรู้จักกับ linux containers กันก่อน

linux containers คืออะไร? (LXC)
เป็นวิธีการทำงานแบบเสมือนระดับ OS สำหรับทำงานแยกจากระบบปฎิบัติการหลัก แต่ไม่ใช่แบบเดียวกับ Virtual machine โดย LXC จะทำการแชร์ Linux Kernel  กับ OS หลักและทำงานเสมือนว่าตัวเองเป็น OS

containers

 

จากรูป จะแสดงถึงลักษณะของ LXC

มาถึง Docker กันบ้าง docker เป็น lightweight container ซึ่งแน่นอนว่าต้องมี Size ที่น้อยกว่า LXC แน่นอน เพราะ docker ทำงานในระดับ Process เช่นถ้าต้องการโปรแกรม 1 ตัวนำไปใส่ใน Container ก็จะทำการเก็บคำสั่งทุกคำสั่งที่ได้พิมพ์ไว้ เพราะฉะนั้นถ้า เราพิมพ์คำสั่งอะไรที่ไม่เกี่ยวกับการทำงานใน Container นั้นๆ จะทำให้ Size ใหญ่จนเกินความจำเป็น โดยทั่วไปจะทำงานอัตราส่วน 1  process = 1 container และนำ container ไป deploy ใช้งานได้ตามที่เราต้องการ

ยกตัวอย่างให้เห็นภาพ

  • สร้าง Container Apache version 2.2
  • สร้าง Container PHP 5.5
  • สร้าง Container MySQL v.xxx
    จะเห็นว่าเรามี 3 container ทั้งหมดจะเก็บเป็น process และเมื่อเรานำ Container ทั้ง 3 ตัวไป deploy ใส่ server ที่เราต้องการ ก็จะได้ software และ  version ที่ตรงกับ container ที่ได้ทำการ freezing ไว้

แล้วจะใช้ยังไง ?

*** เราจะมองเห็นประโยชน์ก็ต่อเมื่อ เราต้องการจะทำ server ตัวใหม่โดยเราต้องการ software และ version เดิม การที่เราจะ install ด้วยตัวเองทั้งหมดก็คงจะไม่เหมือน 100% หรือถ้าเราเขียน script ล็อค version ไว้ก็จะใช้เวลานานเกินไปเพราะอย่าลืมว่าเราต้อง configure software แต่ละตัวอีก docker จึงมีประโยชน์ตรงที่เอา container ไป deploy ใส่ server ตัวใหม่ได้เลยโดยเหมือนเป็นการ cloning จาก server ตัวเก่า เป็นต้น 

Screen Shot 2015-05-17 at 00.31.16

จะเห็นว่า Virtual Machines กับ Docker ทำงานต่างกัน โดย docker จะใช้งานแค่ kernel ตามหลักของ LXC

ทั้งนี้เราสามารถทดลองใช้งานได้โดยกด https://www.docker.com/tryit/

Arnon Hongklay
Arnon Hongklay

View all posts

Comments are closed.