Docker คืออะไร

Docker

ในบทความนี้เราจะมาทำการปูพื้นฐานความรู้ความเข้าใจเกี่ยวกับ Docker กันนะครับ

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

Docker คือเครื่องมือช่วยในการบริหารจัดการ containers ซึ่งเป็นตัวเก็บรวบรวมสภาพแวดล้อมสำหรับรันชิ้นส่วนต่างๆของซอร์ฟแวร์ที่เราพัฒนาขึ้นเพื่อที่จะส่งออกไปให้ users ของเราใช้งานนั่นเอง

ถึงตอนนี้อาจจะยังงงว่า container คืออะไร แต่ก่อนจะไปลงรายละเอียดเรามาทบทวนกระบวนการที่นักพัฒนาซอร์ฟแวร์ต้องทำตั้งแต่เริ่มพัฒนาไปจนถึงการปล่อย (deploy) ไปยัง server กันครับ

ชีวิตที่ไม่มี Docker

ลองคิดเล่นๆถ้าคุณมีคอมพิวเตอร์กับ harddisk เปล่าๆสักเครื่องและอยากจะพัฒนาซอร์ฟแวร์ขึ้นมาสักชิ้น คร่าวๆแล้ว สิ่งที่คุณต้องทำคือ

  • ลงระบบปฏิบัติการ ที่สนับสนุนภาษาที่คุณจะใช้เขียน (ตัวอย่างเช่น Linux, Windows หรือ MacOs)
  • ลงเครื่องมือในการพัฒนา ตัวอย่างเช่นต้องลง nodejs, php, python, mysql database, nginx และอื่นๆ
  • config เครื่องมือ เช่นการ map domain ตั้งค่าต่างๆของ database
  • ลง depended library ตัวอย่างเช่น npm install, pip install
  • build package หลังจากเขียนโปรแกรมเสร็จคุณต้อง build package จริงเพื่อที่จะส่งไปใช้งานจริงใน production

จากตัวอย่างคร่าวๆนี้จะเห็นได้ว่าการจะรันหรือพัฒนาซอร์ฟแวร์สักตัว การสร้างสภาพแวดล้อมของระบบให้เหมาะที่จะรันซอร์ฟแวร์ที่เราพัฒนานั้นประกอบด้วยกระบวนการมากมายที่ต้องใช้เวลาในการจัดเตรียม

คราวนี้ให้สมมุติคร่าวๆว่าคุณมีสภาพแวดล้อมของเซิร์ฟเวอร์ที่ต้อง deploy ซอร์ฟแวร์คือ development, staging, qa และ production คุณต้องทำการจัดการสภาพแวดล้อมนั้นๆเช่นเดียวกับที่คุณทำกับเครื่องอื่นๆซึ่งเป็นการทับซ้อนและเสียเวลา

ซึ่ง Docker หรือกระบวนการ containerization จะมาช่วยเราแก้ปัญหานี้ครับ

Docker image, Docker container

ให้มอง docker image นี้เหมือนตราประทับซอร์ฟแวร์ของเรา และกระดาษเปล่าสัก 4-5 ใบคือ containers ที่อยู่บนserver ที่เราจะ deploy application ขึ้นไปครับ หลังจากสร้างตราประทับนี้เสร็จ เราก็แค่เอาไปปั้มลงบนกระดาษที่อยู่ตามที่ต่างๆ กระดาษเหล่านั้นก็จะมีรูปภาพตามที่เราต้องการโดยไม่ต้องเสียเวลาวาดใหม่ การพัฒนาและเตรียมสภาพแวดล้อมสำหรับซอร์ฟแวร์ของเราก็เช่นกันครับ

Build Docker image

จากภาพด้านบนกระบวนการในการ deploy docker ขึ้นไปยัง server มีดังนี้

  1. build image บนเครื่อง local machine (กระบวนการนี้ก็คือการสร้างสภาพแวดล้อม เช่นการเลือก OS ติดตั้งซอร์ฟแวร์ที่จำเป็น package code ฯลฯ
  2. หลังจาก build เสร็จแล้ว image จะถูกสร้างอยู่ใน local registry ของเรา
  3. ทำการ push image ขึ้นไปยัง remote registry เช่น Dockerhub.io, Amazon Container Registry (ACR) หรือ container registry บนระบบคราวน์อื่นๆ
  4. server pull image จาก remote registry และนำไปรันเป็น container

จากกระบวนการเหล่านี้ จะเห็นได้ว่าเราทำการสร้าง image เพียงครั้งเดียวและสามารถนำไป deploy ยัง server ต่างๆโดยไม่ต้องจัดเตรียม environment อีก

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

สอบถาม ติชม เสนอแนะ ได้ที่ช่อง comment ด้านล่างเลยครับ

Copyright © 2024. All rights reserved - Ninenote.net