Docker คืออะไร

Artit Attasiri
2 min readNov 9, 2019

--

หลายคนคงรู้จัก ได้ยินชื่อหรือใช้งาน docker มาบ้างแล้ว ในบทความนี้จะอธิบาย เกี่ยวกับ docker แบบพื้นฐานให้มากที่สุด หวังว่ามันจะช่วยให้เข้าใจมากขึ้น

Docker คือ engine ที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ

คล้ายกับ Virtual Machine เช่น VMWare, VirtualBox, XEN, KVM

แต่ข้อแตกต่างที่ชัดเจนคือ Virtual Machine ที่รู้จักกันก่อนหน้านี้นั้น ที่เป็นการจำลองทั้ง OS เพื่อใช้งานและหากต้องการใช้งาน service ใดๆ จึงทำการติดตั้งเพิ่มเติมบน OS นั้นๆ แต่สำหรับ docker แล้วจะใช้ container ในการจำลองสภาพแวดล้อมขึ้นมา เพื่อใช้งานสำหรับ 1 service ที่ต้องการใช้งานเท่านั้น โดยไม่ต้องมีส่วนของ OS เข้าไปเกี่ยวข้องเหมือน Virtual Machines อื่นๆ

ข้อดี

ไม่เสียเวลาติดตั้ง Application

เอ๊ะ! docker ไม่ต้อง install หรอ บ้าแล้ว จริงๆแล้วต้องลง application ต่างๆอยู่แต่ใช้เวลาน้อยลงและง่ายมาก ถ้าเราจะเขียน program หรือ web อะไรสักอย่างขึ้นมาอย่างน้อยเราต้อง install server, database หรือถ้ามีมากกว่านั้น queue management software(rabbit MQ), caching server (Redis) ต้อง install แล้ว config ต่างๆอีกมากมาย แน่นอนว่าทำแค่ในเครื่องของ developer อย่างเดียวไม่พอแน่ๆ ต้องไปทำแบบเดิมอีกครั้งบน production แน่นอนว่าถ้าเราใช้ docker เราสามารถใช้ docker images ที่มี application ต่างๆเหล่านั้นรวบรวมไว้ให้ใน images เดียว

เหมือนกันทุก Environment

ปัญหาหนึ่งที่ developer ต้องเคยประสบพบเจอก็คือ ในเครื่องตัวเองกับ production run แล้วได้ไม่เหมือนกัน เลยทำให้เราเคยได้ยินคำว่า “ก็เครื่องผมรันได้” ถ้าใช้ docker ปัญหาเหล่านี้จะหมดไป เพราะทุก environment จะใช้ docker images เดียวกัน

เบาและเร็วกว่ามาก

เราสามารถใช้“Virtual Machine” ได้ เพียงแต่ว่ามันจะช้ากว่า Docker เยอะเลย เพราะว่าในแต่ละ container ของ Docker นั้น จะแชร์ตัว OS รวมไปถึง CPU และ memory ร่วมกันครับ เลยทำให้แต่ละ container นั้นเบามากๆ ต่างจาก VM ที่แต่ละตัวจะต้องมี OS เป็นของตัวเอง และเรายังต้องคอยจัดสรรทรัพยากรต่างๆ ให้อีกด้วยครับ บางตัวรันอยู่แต่ไม่ได้ใช้งานเลย ก็เท่ากับว่าเราเสียทรัพยากรไปฟรีๆ

มีระบบ Registry

Docker เค้าจะมีระบบ registry ที่มีชื่อว่า Docker Hub ที่จะเปิดให้คนทั่วไปสามารถเอา image ที่ตัวเองสร้างขึ้นมาเก็บไว้ที่ส่วนกลางเพื่อที่จะได้แบ่งปันให้คนอื่นได้ใช้ด้วย แน่นอนว่าเราไม่ต้องสร้างเองก็ได้ ถ้ามี image ตรงตามที่เราต้องการจะใช้อยู่แล้วบน docker hub เราก็สามารถ pull มาใช้ได้เลย

สิ่งที่ควรรู้เกี่ยวกับ docker

Dockerfile

เป็นไฟล์ config รูปแบบนึง เพื่อใช้เป็นต้นแบบในการสร้าง image ขึ้นมานั่นเอง ซึ่งจะใส่ command ของ Linux สำหรับติดตั้ง application

Docker image

คือ ไฟล์ image ที่บรรจุ application เอาไว้ โดยได้มาจากการ build ไฟล์ Dockerfile

Docker container

คือ กล่องที่บรรจุ application ที่พร้อมทำงาน ซึ่งเป็นผลมาจากการรัน Docker image

Docker Hub

คือ ที่ๆ เราสามารถอัพโหลด image ที่ตัวเองสร้างขึ้นไปเพื่อแบ่งปันให้คนอื่นได้ใช้ด้วย หรือเราจะดาวน์โหลด image ที่คนอื่นทำไว้แล้วมาใช้งานเลยก็ได้

แน่นอนว่าถ้าอ่านมาถึงตรงนี้ก็น่าจะรู้จัก docker มากขึ้นแน่นอนว่าผมเขียนมาจากกว่าอ่านมาจากที่อื่นๆและความเข้าใจของตัวผมเอง จากการใช้งานเองบางส่วน อาจจะไม่ถูกต้อง100% ก็ได้ สามารถ comment บอกกล่าวกันได้ครับ

--

--