รู้จักกับ Docker สำหรับการ development ฉบับสมบูรณ์

รู้จักกับ Docker สำหรับการ development

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

Docker คืออะไร

Docker คือแพลตฟอร์มที่ใช้สำหรับการจำลอง environment โดยแยกออกมาในลักษณะของ container ซึ่งแตกต่างจากการจำลองแบบ Virtual Machine (VM) ทั่วไป VM จะทำการจำลอง environment ทั้งหมด รวมถึงระบบปฏิบัติการ (OS) ทำให้ใช้ทรัพยากรค่อนข้างมาก ในขณะที่ Docker ใช้ environment ร่วมกันกับเครื่อง host โดยแบ่งส่วนหนึ่งออกมาใช้ ทำให้ Docker มีขนาดเล็กกว่า รันได้เร็วกว่า และใช้ทรัพยากรน้อยกว่า

Docker สำคัญอย่างไร

Docker ช่วยแก้ปัญหาความหลากหลายของ environment ที่นักพัฒนาต้องเผชิญอยู่บ่อยครั้ง ไม่ว่าจะเป็นเรื่องของระบบปฏิบัติการ, เวอร์ชั่นของ library หรือ dependencies ต่าง ๆ Docker ทำให้ทุกเครื่องมี environment ที่เหมือนกัน นักพัฒนาสามารถสร้าง image file ที่รวมทุกอย่างที่จำเป็นสำหรับการรัน application ไว้ แล้วส่งต่อให้คนอื่น ๆ ได้อย่างง่ายดาย ทำให้ทุกคนได้ environment ที่เหมือนกัน ไม่ว่าจะเป็นเครื่องของผู้เรียน หรือเครื่องของใครก็ตามที่มี Docker

การติดตั้ง Docker

การติดตั้ง Docker ในปัจจุบันทำได้ง่ายมาก ๆ โดยมีโปรแกรมที่ชื่อว่า Docker Desktop ให้ดาวน์โหลดและติดตั้งได้ง่าย ๆ

Docker Desktop

Docker Desktop เป็นโปรแกรมที่รวมเอา Docker Engine, Docker CLI, Docker Compose และเครื่องมืออื่น ๆ ที่จำเป็นสำหรับการใช้งาน Docker ไว้ในที่เดียว ทำให้การติดตั้งและการใช้งาน Docker เป็นเรื่องง่ายสำหรับผู้เริ่มต้น

การตรวจสอบการติดตั้ง Docker

หลังจากติดตั้ง Docker Desktop เสร็จเรียบร้อยแล้ว สามารถตรวจสอบได้ว่าติดตั้งสำเร็จหรือไม่ โดยเปิด Terminal ขึ้นมาแล้วพิมพ์คำสั่ง docker -v หากมีการแสดงผลเวอร์ชั่นของ Docker แสดงว่าการติดตั้งสำเร็จ

ภาพรวม Session

ใน session นี้ เราจะมาทำความเข้าใจเกี่ยวกับ Docker ในมุมมองของการทำ development โดยมีเป้าหมายเพื่อให้สามารถ run Docker environment ได้ สำหรับมือใหม่ที่ไม่เคยใช้ Docker มาก่อน

คำศัพท์พื้นฐานของ Docker

เพื่อให้เข้าใจ Docker ได้อย่างถ่องแท้ เรามาทำความรู้จักกับคำศัพท์พื้นฐานที่ควรรู้จักกันก่อน

Image

Image คือแพ็คเกจที่รวมทุกอย่างที่จำเป็นสำหรับการรัน application ไม่ว่าจะเป็น code, runtime, system tools, system libraries และ settings ต่าง ๆ เปรียบเสมือนแม่พิมพ์ที่ใช้สร้าง container

Container

Container คือ instance ที่ run มาจาก image เปรียบเสมือนสิ่งที่เราสร้างขึ้นมาจากแม่พิมพ์ image container จะมีสภาพแวดล้อมการทำงานที่แยกจากกัน ทำให้สามารถรัน application ได้อย่างอิสระ

Docker Image และ Container

Docker ทำงานบนพื้นฐานของ Image และ Container โดย Image จะถูกใช้เพื่อสร้าง Container ซึ่งเป็นที่ที่ application ของเราจะทำงาน

การใช้งาน Docker Image: Hello World

มาลองใช้งาน Docker Image ง่าย ๆ กัน โดยใช้ Image “Hello World” เพื่อทดสอบการทำงานของ Docker

การ Pull Image

การดึง Image จาก Docker Hub ซึ่งเป็น registry ที่เก็บ Image ต่าง ๆ มากมาย สามารถทำได้โดยใช้คำสั่ง docker pull

การใช้คำสั่ง docker pull

docker pull hello-world เป็นคำสั่งที่ใช้ดึง Image “hello-world” จาก Docker Hub

การใช้คำสั่ง docker images

docker images เป็นคำสั่งที่ใช้ดู Image ทั้งหมดที่ถูกเก็บไว้ในเครื่อง

การใช้คำสั่ง docker run

docker run hello-world เป็นคำสั่งที่ใช้ run container จาก Image “hello-world” เมื่อ run สำเร็จ จะแสดงข้อความ “Hello from Docker!”

การสร้าง Dockerfile

Dockerfile คือไฟล์ที่รวมคำสั่งต่าง ๆ ที่ใช้ในการ build image โดย Dockerfile จะบอก Docker ว่าต้องทำอะไรบ้างเพื่อสร้าง image

Base Image

Base Image คือ image พื้นฐานที่เราจะใช้ในการสร้าง image ของเราเอง โดยเราจะเริ่มต้นจาก image ที่มีระบบปฏิบัติการพื้นฐาน เช่น Ubuntu หรือ Alpine

Work Directory

Work Directory คือ directory ที่เราจะใช้ในการทำงานภายใน container เปรียบเสมือน root directory ของ application ของเรา

RUN, COPY, CMD

  • RUN: ใช้สำหรับ execute command ต่าง ๆ ในระหว่าง build image
  • COPY: ใช้สำหรับ copy file จากเครื่อง host ไปยัง container
  • CMD: ใช้สำหรับกำหนด command ที่จะ run เมื่อ container เริ่มต้นทำงาน

การ Build Image

การ build image คือการสร้าง image จาก Dockerfile โดยใช้คำสั่ง docker build

การ Build Dockerfile

docker build -t my-app . เป็นคำสั่งที่ใช้ build image จาก Dockerfile ใน directory ปัจจุบัน โดยตั้งชื่อ image ว่า “my-app”

การ Run Container

การ run container คือการสร้าง instance จาก image ที่เรา build ขึ้นมา โดยใช้คำสั่ง docker run

การ Run Container และ Map Port

docker run -p 8080:80 my-app เป็นคำสั่งที่ใช้ run container จาก image “my-app” และ map port 8080 บนเครื่อง host ไปยัง port 80 ใน container

การ Map Port

การ map port คือการเชื่อมต่อ port บนเครื่อง host กับ port ใน container ทำให้เราสามารถเข้าถึง application ที่รันอยู่ใน container ได้ผ่านทาง port บนเครื่อง host

Docker Compose คืออะไร

Docker Compose คือเครื่องมือที่ช่วยให้เราสามารถจัดการ container หลาย ๆ ตัวพร้อมกันได้ โดยใช้ไฟล์ docker-compose.yml ในการกำหนดค่าต่าง ๆ ของ container

การใช้งาน Docker Compose

การใช้งาน Docker Compose ทำได้ง่าย ๆ โดยใช้คำสั่ง docker-compose up เพื่อสร้างและ run container ตามที่กำหนดไว้ในไฟล์ docker-compose.yml

การใช้คำสั่ง docker-compose

docker-compose up -d เป็นคำสั่งที่ใช้สร้างและ run container ทั้งหมดที่กำหนดไว้ในไฟล์ docker-compose.yml โดย run ใน background

การใช้คำสั่ง docker-compose down

docker-compose down เป็นคำสั่งที่ใช้หยุดและลบ container ทั้งหมดที่ถูกสร้างขึ้นโดย Docker Compose

การเพิ่ม MySQL และ phpMyAdmin ด้วย Docker Compose

Docker Compose ช่วยให้เราสามารถเพิ่ม MySQL และ phpMyAdmin ได้อย่างง่ายดาย โดยกำหนดค่าต่าง ๆ ในไฟล์ docker-compose.yml

การเชื่อมต่อ Node.js กับ Database

การเชื่อมต่อ Node.js กับ Database เช่น MySQL สามารถทำได้โดยใช้ library เช่น mysql2 และกำหนดค่าการเชื่อมต่อใน code ของ Node.js

Docker Volume คืออะไร

Docker Volume คือกลไกที่ใช้ในการเก็บข้อมูลถาวร (persistent data) ซึ่งข้อมูลจะถูกเก็บไว้ภายนอก container ทำให้ข้อมูลไม่หายไปเมื่อ container ถูกลบ

การใช้งาน Docker Volume

การใช้งาน Docker Volume สามารถทำได้โดยใช้ option -v หรือกำหนดค่าในไฟล์ docker-compose.yml

การใช้ docker volume

docker volume create my-volume เป็นคำสั่งที่ใช้สร้าง volume ชื่อ “my-volume”

การใช้ docker volumes ls

docker volumes ls เป็นคำสั่งที่ใช้ดู volume ทั้งหมดที่มีอยู่ในระบบ

การใช้ docker volume rm

docker volume rm my-volume เป็นคำสั่งที่ใช้ลบ volume ชื่อ “my-volume”

การเข้าสู่ Container

บางครั้งเราอาจจำเป็นต้องเข้าไปจัดการภายใน container เพื่อ debug หรือทำสิ่งอื่น ๆ สามารถทำได้โดยใช้คำสั่ง docker exec -it

การใช้ docker exec -it

docker exec -it <container_id> bash เป็นคำสั่งที่ใช้เข้าสู่ container โดยใช้ bash shell

คำแนะนำเพิ่มเติม

Docker เป็นเครื่องมือที่มีประโยชน์มากสำหรับการ development หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Docker คุณสามารถศึกษาจากเอกสารประกอบของ Docker หรือจากแหล่งข้อมูลอื่น ๆ ที่มีอยู่มากมาย


💬 ปรึกษาการเงินฟรีกับผู้เชี่ยวชาญ คลิกเพื่อแอดไลน์


👉 แอดไลน์เพื่อปรึกษาฟรี


หรือสแกน QR เพื่อแอด

QR Code Line