มาเข้าใจและรู้จัก Docker กันดีกว่า…

Jinawong Jino
20Scoops CNX
Published in
2 min readApr 19, 2018

--

ปัจจุบันนักพัฒนาส่วนใหญ่คงไม่มีใครไม่เคยได้ยินคำว่า Docker และ ยังมีอีกหลายคนยังคงสับสนว่ามันทำงานยังไงมาช่วยเราช่วยอะไรเราได้บ้าง ทำไมมีแต่คนพูดถึง Docker นะ บทความนี้จะช่วยอธิบายในระดับหนึ่งว่า มันมาช่วยเราทำงานยังไง ในสไตล์บ้าน ๆ กัน ที่จะไม่ลงลึกมากจนเกินไป

สารบัญ

  • ที่มาของ Docker
  • ทำไมต้องใช้ Docker ?
  • ควรรู้อะไรเกี่ยวกับ Docker บ้าง
  • สรุปความเข้าใจ Docker

ที่มาของ Docker

Docker เกิดขึ้นเมื่อ 2013 โดยเริ่มเปิดตัวครั้งแรกในงาน Pycon ให้เป็นที่รู้จักของเหล่า Deveploer ทั้งหลาย ก็เพิ่งเกิดมาไม่นานนี้นะหวังว่าไม่มีใครเขียน requirement สมัครงานเกิน 5 ปีหรอกนะ

Docker เริ่มพัฒนาโดยทำเป็นโปรเจคภายในของบริษัท dotCloud และพัฒนาด้วยภาษา Go Language โดย release public จริง ๆ คือ version 0.9

ควรรู้อะไรเกี่ยวกับ Docker บ้าง

ก่อนที่เราจะมาเริ่มทำ Docker ก็ต้องทำความรู้จักกับคำหลัก ๆ ที่ใช้กันใน Docker บ่อย ๆ มันก็อาจจะมีหลาย ๆ คำที่จะทำให้เราสับสนกันอยู่บ้าง ไม่ว่าจะเป็น Image บ้างล่ะ Container บ้างล่ะ ซึ่งคำที่ใช้สำหรับ Docker เอาจริง ๆ ก็มีไม่เยอะ แต่มันจะมีคำในส่วนของเรื่อง OS พวกคำสั่งของ Linux Command เข้ามาเกี่ยวข้องด้วยที่จะทำให้เราสับสน “แต่ก็ควรจะรู้คำสั่งพื้นฐานด้วยเอาไว้สำหรับการเขียน Dockerfile” คำที่ใช้ใน Docker ก็จะมีไม่กี่คำลองเริ่มจากส่วนหลัก ๆ ก่อนที่ควรจะรู้จักได้แก่

  • Dockerfile

Dockerfile เปรียบเสมือน Blueprint แผ่นหนึ่ง ที่เราจะเขียนคำสั่งต่าง ๆ ลงไปว่าโปรแกรมที่เราจะใช้รันเนี่ยต้องมีอะไรบ้าง ใช้เพื่อสร้าง Image

  • Image

Image เปรียบเสมือน Prototype บ้านซักหลังนึงก่อนที่เราจะเอาไปสร้างเป็น บ้าน โดย image เนี่ยจะสร้างมาจาก Dockerfile หรือ Blueprint ของเราที่เขียนไว้นี้เอง

  • Container

Container เปรียบเสมือน บ้าน ที่เราสร้างขึ้นมาโดยการดึงจาก Prototype หรือ Image มาเพื่อสร้างอีกที

โดยรวมของพวกนี้ก็เป็นส่วนหลัก ๆ ของ Docker ที่เราควรจะรู้จัก โดยสิ่งเหล่าเนี้ยมันมองละก็เหมือนกับ enviroment ที่เราสร้างมาเพื่อใช้งานได้หลาย ๆ ครั้ง และ หลาย ๆ ที่โดยเราสร้าง หรือ เขียนไว้เพียงครั้งเดียวหรือเราจะปรับแต่งเพิ่มเติมก็ได้

ทำไมต้องใช้ Docker ?

จากที่รู้จักส่วนประกอบของ Docker คร่าว ๆ แล้วเราก็จะมองว่า อ่าว Docker มันก็เหมือน Virtual box ตัวหนึ่งนี่หว่า ใช่ครับมันคือ Virtual Box แต่เป็น Micro Virtual Box ขนาดเล็ก โดยที่เราไม่ต้องมาติดตั้ง OS ตัวหนึ่งที่มีขนาด รวม ๆ ไปแล้ว ก็หลาย GB นี่ยังไม่นับแรมของเครื่องเราอีกนะ เพื่อที่เราจะสร้าง enviroment หนึ่งในการรันโปรเจคที่เรากำลังพัฒนาอยู่

สมมุติว่า ตอนนี้ผมกำลังทำ โปรเจคหนึ่งเป็นเว็บโดยใช้ nodejs version 3.0 แต่ว่าอยู่ ๆ ก็มีอีกงานหนึ่งมาแทรกกระทันหัน และโปรเจคทีมาแทรกนั้นดันใช้ nodejs version 1.2 สิ่งที่ผมต้องทำคือผมต้องลบ nodejs 3.0 เพื่อที่ผมต้องไป ทำงานตัวที่แทรกมานี้เมื่อทำเสร็จ ก็ต้องกลับมาลง nodejs version 3.0 เพื่อที่กลับมาทำงานเดิมต่ออีก

ซึ่งกรณีนี้ก็เป็นปัญหาหนึ่งที่ จะนำ Docker มาช่วยแก้ปัญหาได้ โดยเพียงแต่ละโปรเจคที่เราทำนั้นมี Blueprint หรือ Dockerfile ที่มีสิ่งต่าง ๆ ที่ต้องใช้ครบหมดแล้ว เพียงเราแค่ นำโปรเจคนั้นมา แล้วทำการรันคำสั่งของ Docker เพื่อสร้าง Container สำหรับการรันโปรเจคเราก็ไม่ต้องไป ลงอะไรเพิ่มเติมอีกแล้ว

สรุปความเข้าใจ Docker

จากที่ได้สัมผัสหรือลองใช้ Docker มาแล้วถือว่าเป็น Tools ที่น่าสนใจมากเราควรจะลองที่จะใช้มัน เพื่อช่วยให้เราสะดวกสบายในการ พัฒนาซอร์ฟแวร์มากยิ่งขึ้น “หากเข้าใจและใช้อย่างถูกต้อง” ซึ่งบทความนี้ได้กล่าวถึงพื้นฐานของ Docker เพื่อที่จะให้เราเข้าใจมากยิ่งขึ้นสำหรับการเริ่มต้น

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

ซึ่งจริง ๆ แล้ว ยังมีอีกหลายเรื่องที่บทความนี้ไม่ได้พูดถึง ไม่ว่าจะเป็น docker-compose , docker swarm, docker hub และ เทคนิคต่าง ๆ ในการใช้ Docker ซึ่งผมอาจจะมี บทความที่ลงลึกไปในแต่ละส่วนอีก “อันนี้ค่อยว่ากัน อิอิ” บทความนี้อาจจะออกมาช้าไปหน่อย คนเขาคงรู้จักหรือลองใช้ไปหมดละ แต่ผมก็ยังอยากอธิบายสำหรับคนที่ใช้ Docker ได้แล้ว แต่ก็ยังงง ว่าเฮ้ยรันได้แล้วนะแต่ก็ไม่รู้ว่าด้านในเนี่ยมันทำงานยังไงมันถึงออกมารันได้อย่างนั้นนะ ยังไงผมก็ขอจบบทความแค่นี้แล้วกันครับ

ขอบคุณทุกท่านที่เสียเวลามาอ่านบทความนี้ อาจจะได้อะไรไม่เยอะแต่ก็ถือว่ายังได้ละกัน “ได้อ่านน่ะ ”5555

--

--