Screen Shot 2559-01-15 at 9.53.52 AM
เมื่อวานมีโอกาสได้ไปแบ่งปันความรู้พื้นฐานเรื่อง Docker
ในงาน Docker Bangkok Meetup ซึ่งจัดเป็นครั้งแรกที่ Kaidee Ofiice
จึงทำการสรุปเรื่องที่แบ่งปันดังนี้

โดยจะเป็นเรื่องของการใช้งาน Docker ในมุมมองของ Developer
ทั้งการทำความเข้าใจเกี่ยวกับ Container และ Docker
เนื่องจากผู้เริ่มต้นมักเข้าใจว่า Docker == Container
แต่สิ่งที่ถูกต้องคือ Docker มันเป็นตัวจัดการ container
ซึ่งมีการจัดการหลัก ๆ เช่น

การจัดการ image

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

โดย image ต่าง ๆ จะถูกเก็บไว้ที่ DockerHub

การจัดการ application ด้วย Docker compose

โดยปกติการจัดการจะอ่านค่าจาก Dockerfile
ใช้สำหรับการกำหนด environment พื้นฐานของระบบ
เช่น Operating System, ภาษาโปรแกรม และ library ต่างๆ

และจะมีไฟล์ .yml สำหรับกำหนด service ต่าง ๆ
ของ application หรือ ทำการกำหนดโครงสร้างการทำงานของระบบนั่นเอง
เช่น

  • Frontend
  • Backend
  • Database
  • Caching
  • Proxy

ซึ่งทำให้การใช้งาน Docker ง่าย และ สะดวกมากยิ่งขึ้น

การ provisioning เครื่องที่จะใช้ Docker จัดการด้วย Docker machine

มันคือ การสร้างเครื่อง หรือ สร้างโลกของ Docker นั่นเอง
ถ้าเราไม่สร้าง จะไม่สามารถจัดการ container ผ่าน docker ได้
โดยเราสามารถกำหนดชื่อ และ ปลายทางของเครื่องได้ หรือเรียกว่า Driver
เช่น

  • Generic
  • Virtual Box
  • Amazon Web Service

ดูข้อมูลเพิ่มเติมได้ที่ Docker Machine Driver

แต่ก่อนที่จะเริ่มต้นทำอะไรกับ Docker อย่าลืมติดตั้ง Docker Toolbox นะ

ปัญหาที่ Developer มักเจอคือ Docker มันยาก มันซับซ้อน

ดังนั้นอย่าไปสนใจมันเลย ให้พวกที่ดูแล infrastructure ทำไปเถอะ !!
แต่ในมุมมองผมคิดว่า
developer น่าจะลองศึกษาอะไรใหม่ ๆ เช่น Docker
เพื่อลองนำไปใช้งาน
เพื่อลองนำไปแก้ไขปัญหาที่มักพบเจอ
เพื่อทำให้รู้ว่ามันเข้ามาช่วย หรือ ซ้ำเติมปัญหาของเรา
เช่น

  • เรื่องของการติดตั้ง software และ library ต่าง ๆ บนเครื่อง
  • เรื่องของการจัดการ dependency ของ library ต่าง ๆ
  • เรื่องการจัดการ version
  • เรื่องของการจัดการ environment ทั้ง dev, test และ production

แต่ก่อนอื่นต้องมีความรู้พื้นฐาน

แต่ก่อนอื่นต้องเข้าใจการทำงานของ Docker
แต่ก่อนอื่นต้องลองผิดลองถูกจนเข้าใจ
และที่สำคัญต้องเข้าใจปัญหาของตัวเองด้วย
ก่อนจะนำเครื่องมือใด ๆ มาแก้ไขนะครับ

สุดท้ายนี้
ขอขอบคุณพื้นที่ในการแบ่งปัน
เจอกันครั้งต่อไปครับ

ข้อมูลต่าง ๆ ของการแบ่งปัน
Source code ตัวอย่างอยู่ที่ Github.com::Docker 101

Slide :: Docker 101