เริ่มต้นใช้งาน Docker

Docker

หลังจากทำความเข้าใจพื้นฐานในการทำงานของ Docker - เครื่องมือพื้นฐานของระบบ software infrstructureกันไปแล้ว ในบทความนี้เราจะมาลองใช้ docker ในเครื่อง local machine ของเรากันครับ

Install Docker

Linux

อันดับแรกเลยให้ install docker ลงบนเครื่องเราก่อน เครื่องผมใช้ ubuntu ก็จะสามารถลง Docker ด้วยคำสั่งง่ายๆดังนี้

1
sudo apt install docker

สำหรับคนที่ใช้ Linux distro อื่นๆสามารถทำตาม เวปไซด์ทางการของ Docker เพื่อทำการติดตั้งได้เลยครับ

MacOs และ Windows

สำหรับ MacOS หรือ Windows คุณสามารถลง Docker desktop ได้แต่เนื่องจากแอปพลิเคชั่นนี้ไม่ฟรีอีกต่อไปแล้ว ผมแนะนำให้ใช้ Podman ครับ สำหรับคนที่ใช้ MacOS Colima ก็เป็นอีกตัวที่หนึ่งที่ติดตั้งและใช้งานได้ไม่ยาก

หลังจากติดตั้งเสร็จแล้วให้ลองรัน สองคำสั่งนี้

1
docker --version
2
docker ps # คำสังเพื่อเช็ค process status ของ Docker

ถ้ารันได้ไม่มีปัญหาอะไรก็เป็นอันใช้ได้ครับ สิ้นสุดขั้นตอนการติดตั้ง

การทำงานของ Docker host

Docker Daemon

จากรูปภาพข้างบนพระเอกของเราคือ Docker Daemon หรือว่าส่วนของ server ที่จะคอยดูแลจัดการการทำงานของทั้งหมด เวลาเรา start Docker ก็คือการที่เรา start daemon นั่นเองครับ ในกรณีที่เราจะศึกษานี้ทุกอย่างยกเว้น Image registry จะอยู่บนเครื่อง local machine ของเรา

ยกตัวอย่างเช่น เวลาเรารันคำสั่ง docker ps ก็คือการที่เราใช้ docker client ส่งคำถามไปยัง daemon ว่า process status เป็นอย่างไรบ้าง daemon ก็จะทำการสำรวจและส่งคำตอบกลับมาให้เรา คราวนี้ตัวอย่างกระบวนการที่เราจะลองรัน docker container บนเครื่องของเรามีดังนี้

  1. docker client ส่งคำสั่ง pull image ไปยัง Daemon, daemon ตรวจสอบว่ามี image หรือยัง
  2. ถ้าไม่มีก็จะไปทำการหาเพื่อ download ที่ image registry มาไว้บนเครื่อง (โดย default จะไปหาที่ Docker Hub)
  3. docker client ส่งคำสั่งใน run container จาก image ที่ดาวโหลดมา
  4. docker daemon รัน container จาก image ที่ดาวโหลดมาไว้แล้ว

ตัวอย่างการรัน Nginx container

ในตัวอย่างนี้เราจะมาทดลองรัน Nginx ด้วย docker โดยเราจะใช้ office image จาก Nginx ใน Dockerhub นะครับ ก่อนอื่นเลยมาลองสำรวจ Docker host บนเครื่องเราก่อนด้วยสองคำสั่งนี้

1
docker image list
2
docker container list

สำหรับคนที่เพิ่งลง docker ควรจะได้ผลลัพธ์ตามข้างล่างนี้นะครับ ซึ่งหมายความว่าตอนนี้ที่ host เรายังไม่มีทั้ง container และ image อยู่เลย

Empty Docker Host

ทีนี้เราสามารถ pull image version ล่าสุดมาจาก nginx ได้ด้วยคำสั่งนี้

1
docker pull nginx:latest

หลังจากทำการ pull image จาก image registry เสร็จเรียบร้อย ถ้าเรารันคำสัง่ docker image list ดูเราก็จะเห็นว่า image ได้ถูก download ลงมาเรียบร้อย

Nginx image

รัน 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

ตัวอย่างเช่น

1
docker run --name nginx-container --detach --publish 8080:80 nginx:latest

หลังจากรันคำสั่งเรียบร้อย docker client ก็จะ output container id ออกมาให้ ถ้าเราลองใช้คำสั่ง docker container list เราจะเห็นว่ามี container ของเรารันอยู่ตามรูปข้างล่างเลยครับ

Nginx container

ทีนี้ถ้าเราลองเข้า port localhost ที่เรา map ไว้เราก็จะเห็นหน้า welcome page ของ Nginx ดังนี้ครับ

http://localhost:8080
Nginx welcome page

มาถึงขั้นตอนนี้ก็เป็นอันเรียบร้อยสำหรับผู้เริ่มต้นเรียนรู้ docker ยินดีด้วยครับ คุณได้ทำการทดลองใช้ Docker เบื้องต้นได้สำเร็จแล้ว :)

Clean up

ก่อนที่จะจบบทเรียนนี้ ผมแนะนำให้ทำการ clean up ทรัพยากรณ์ที่เราได้ใช้ไปก่อน เนื่องจาก image และ container บางตัวจะมีขนาดใหญ่ทำให้สิ้นเปลืองทรัพยากรณ์เครื่อง ในที่นี้ให้ใช้คำสั่งข้างล่างเพื่อลบ image และ container ที่เราทดลองมาทิ้งไปครับ

1
docker container stop nginx-container
2
docker system prune -a
Clean up docker

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

Copyright © 2024. All rights reserved - Ninenote.net