เริ่มต้นใช้งาน Docker
หลังจากทำความเข้าใจพื้นฐานในการทำงานของ Docker - เครื่องมือพื้นฐานของระบบ software infrstructureกันไปแล้ว ในบทความนี้เราจะมาลองใช้ docker ในเครื่อง local machine ของเรากันครับ
Install Docker
Linux
อันดับแรกเลยให้ install docker ลงบนเครื่องเราก่อน เครื่องผมใช้ ubuntu ก็จะสามารถลง Docker ด้วยคำสั่งง่ายๆดังนี้
สำหรับคนที่ใช้ Linux distro อื่นๆสามารถทำตาม เวปไซด์ทางการของ Docker เพื่อทำการติดตั้งได้เลยครับ
MacOs และ Windows
สำหรับ MacOS หรือ Windows คุณสามารถลง Docker desktop ได้แต่เนื่องจากแอปพลิเคชั่นนี้ไม่ฟรีอีกต่อไปแล้ว ผมแนะนำให้ใช้ Podman ครับ สำหรับคนที่ใช้ MacOS Colima ก็เป็นอีกตัวที่หนึ่งที่ติดตั้งและใช้งานได้ไม่ยาก
หลังจากติดตั้งเสร็จแล้วให้ลองรัน สองคำสั่งนี้
ถ้ารันได้ไม่มีปัญหาอะไรก็เป็นอันใช้ได้ครับ สิ้นสุดขั้นตอนการติดตั้ง
การทำงานของ Docker host
จากรูปภาพข้างบนพระเอกของเราคือ Docker Daemon หรือว่าส่วนของ server ที่จะคอยดูแลจัดการการทำงานของทั้งหมด เวลาเรา start Docker ก็คือการที่เรา start daemon นั่นเองครับ
ในกรณีที่เราจะศึกษานี้ทุกอย่างยกเว้น Image registry จะอยู่บนเครื่อง local machine ของเรา
ยกตัวอย่างเช่น เวลาเรารันคำสั่ง docker ps ก็คือการที่เราใช้ docker client ส่งคำถามไปยัง daemon ว่า process status เป็นอย่างไรบ้าง daemon ก็จะทำการสำรวจและส่งคำตอบกลับมาให้เรา
คราวนี้ตัวอย่างกระบวนการที่เราจะลองรัน docker container บนเครื่องของเรามีดังนี้
- docker client ส่งคำสั่ง pull image ไปยัง Daemon, daemon ตรวจสอบว่ามี image หรือยัง
- ถ้าไม่มีก็จะไปทำการหาเพื่อ download ที่ image registry มาไว้บนเครื่อง (โดย default จะไปหาที่ Docker Hub)
- docker client ส่งคำสั่งใน run container จาก image ที่ดาวโหลดมา
- docker daemon รัน container จาก image ที่ดาวโหลดมาไว้แล้ว
ตัวอย่างการรัน Nginx container
ในตัวอย่างนี้เราจะมาทดลองรัน Nginx ด้วย docker โดยเราจะใช้ office image จาก Nginx ใน Dockerhub นะครับ
ก่อนอื่นเลยมาลองสำรวจ Docker host บนเครื่องเราก่อนด้วยสองคำสั่งนี้
สำหรับคนที่เพิ่งลง docker ควรจะได้ผลลัพธ์ตามข้างล่างนี้นะครับ ซึ่งหมายความว่าตอนนี้ที่ host เรายังไม่มีทั้ง container และ image อยู่เลย
ทีนี้เราสามารถ pull image version ล่าสุดมาจาก nginx ได้ด้วยคำสั่งนี้
1docker pull nginx:latest
หลังจากทำการ pull image จาก image registry เสร็จเรียบร้อย ถ้าเรารันคำสัง่ docker image list
ดูเราก็จะเห็นว่า image ได้ถูก download ลงมาเรียบร้อย
รัน Docker container ด้วย Nginx image
ในขั้นตอนนี้เราก็จะทำการรัน container จาก image ที่เราได้ดาวโหลดมาด้วยคำสั่ง
docker run --name <ตั้งชื่อ container> --detach --publish <port ภายนอก>:<port ภายใน> <image>:<tag>
ชื่อ container
จะเป็นอะไรก็ได้แล้วแต่เราจะตั้งเลยครับ แต่ควรตั้งให้มีความหมายที่จดจำได้ง่าย--detach
จะเป้นการรัน container ใน background ทำให้เราสามารถปิด terminal ได้ไม่ต้องเปิดทิ้งไว้ --publish
จะเป็นการ map ระหว่าง port ใน container โดยในที่นี้เราจะให้ request ที่ 8080 ถูก forward ไปยัง port 80 ใน container ซึ่งเป้น port default ของ Nginx
ตัวอย่างเช่น
1docker run --name nginx-container --detach --publish 8080:80 nginx:latest
หลังจากรันคำสั่งเรียบร้อย docker client ก็จะ output container id ออกมาให้ ถ้าเราลองใช้คำสั่ง docker container list
เราจะเห็นว่ามี container ของเรารันอยู่ตามรูปข้างล่างเลยครับ
ทีนี้ถ้าเราลองเข้า port localhost ที่เรา map ไว้เราก็จะเห็นหน้า welcome page ของ Nginx ดังนี้ครับ
http://localhost:8080มาถึงขั้นตอนนี้ก็เป็นอันเรียบร้อยสำหรับผู้เริ่มต้นเรียนรู้ docker ยินดีด้วยครับ คุณได้ทำการทดลองใช้ Docker เบื้องต้นได้สำเร็จแล้ว :)
Clean up
ก่อนที่จะจบบทเรียนนี้ ผมแนะนำให้ทำการ clean up ทรัพยากรณ์ที่เราได้ใช้ไปก่อน เนื่องจาก image และ container บางตัวจะมีขนาดใหญ่ทำให้สิ้นเปลืองทรัพยากรณ์เครื่อง
ในที่นี้ให้ใช้คำสั่งข้างล่างเพื่อลบ image และ container ที่เราทดลองมาทิ้งไปครับ
1docker container stop nginx-container
สอบถาม ติชม เสนอแนะ ได้ที่ช่อง comment ด้านล่างเลยครับ