รู้จักกับ 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 imageCOPY: ใช้สำหรับ copy file จากเครื่อง host ไปยัง containerCMD: ใช้สำหรับกำหนด 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 เพื่อแอด

Leave a Reply