เมื่อวานมีโอกาสได้ไปแบ่งปันความรู้พื้นฐานเรื่อง 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
การ provisioning เครื่องที่จะใช้ Docker จัดการด้วย Docker machine
มันคือ การสร้างเครื่อง หรือ สร้างโลกของ Docker นั่นเอง ถ้าเราไม่สร้าง จะไม่สามารถจัดการ container ผ่าน docker ได้ โดยเราสามารถกำหนดชื่อ และ ปลายทางของเครื่องได้ หรือเรียกว่า Driver เช่น- Generic
- Virtual Box
- Amazon Web Service
ปัญหาที่ Developer มักเจอคือ Docker มันยาก มันซับซ้อน
ดังนั้นอย่าไปสนใจมันเลย ให้พวกที่ดูแล infrastructure ทำไปเถอะ !! แต่ในมุมมองผมคิดว่า developer น่าจะลองศึกษาอะไรใหม่ ๆ เช่น Docker เพื่อลองนำไปใช้งาน เพื่อลองนำไปแก้ไขปัญหาที่มักพบเจอ เพื่อทำให้รู้ว่ามันเข้ามาช่วย หรือ ซ้ำเติมปัญหาของเรา เช่น- เรื่องของการติดตั้ง software และ library ต่าง ๆ บนเครื่อง
- เรื่องของการจัดการ dependency ของ library ต่าง ๆ
- เรื่องการจัดการ version
- เรื่องของการจัดการ environment ทั้ง dev, test และ production