Docker ทำให้การรันแอปพลิเคชันง่ายขึ้นมาก เพราะแพ็กทุกอย่างที่แอปต้องใช้ไว้ในคอนเทนเนอร์เดียว บทความนี้พาติดตั้ง Docker Engine บน Ubuntu 24.04 จาก repository ทางการของ Docker ตั้งแต่เริ่มจนรันคอนเทนเนอร์แรกได้
เหมาะสำหรับผู้ดูแลระบบที่เริ่มสนใจงานสาย DevOps และอยากมีเครื่องทดลองของตัวเอง คำสั่งทั้งหมดอ้างอิงจากเอกสารทางการของ Docker
สิ่งที่ต้องเตรียม
- Ubuntu 24.04 LTS แบบ 64 บิต ที่ติดตั้งใหม่ หรือเครื่องที่ยังไม่เคยลง Docker
- ผู้ใช้ที่มีสิทธิ์
sudo - เชื่อมต่ออินเทอร์เน็ตได้ เพื่อดาวน์โหลดแพ็กเกจจาก
download.docker.com - พื้นที่ว่างอย่างน้อย 10 GB สำหรับ image แรก ๆ
บทความนี้ใช้ Docker Engine ไม่ใช่ Docker Desktop ซึ่งเป็นคนละผลิตภัณฑ์ Docker Engine เหมาะกับเซิร์ฟเวอร์ที่ไม่มีหน้าจอ
ขั้นตอนการติดตั้ง
1. ถอนแพ็กเกจที่อาจขัดแย้ง
ถ้าเครื่องเคยลง Docker จากแหล่งอื่น เช่น docker.io ของ Ubuntu ให้ถอนออกก่อน เพื่อกันปัญหาแพ็กเกจชนกัน
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y $pkg
done
2. เพิ่ม repository ของ Docker
เพิ่มกุญแจ GPG และที่เก็บแพ็กเกจของ Docker เข้าระบบ
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
3. ติดตั้งแพ็กเกจ
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ภาพประกอบตัวอย่าง: ผลลัพธ์ของคำสั่ง docker version (เปลี่ยนเป็นภาพจริงภายหลัง)
4. ตรวจสอบการติดตั้ง
เช็กว่าบริการทำงานอยู่ แล้วลองรันคอนเทนเนอร์ทดสอบ ถ้าสำเร็จจะเห็นข้อความ Hello from Docker!
sudo systemctl status docker --no-pager
sudo docker run hello-world
ใช้ docker compose (มีช่องว่าง) ซึ่งเป็นปลั๊กอินรุ่นใหม่ ไม่ต้องติดตั้ง docker-compose แยกอีกต่อไป
ใช้งานโดยไม่ต้องพิมพ์ sudo
เพิ่มผู้ใช้ของคุณเข้ากลุ่ม docker แล้วล็อกอินใหม่ หรือรัน newgrp docker เพื่อให้สิทธิ์มีผลทันที
sudo usermod -aG docker $USER
newgrp docker
docker ps
ผู้ใช้ในกลุ่ม docker สั่งงาน Docker daemon ได้ ซึ่งเทียบเท่าสิทธิ์ root บนเครื่อง เพิ่มเฉพาะผู้ที่ไว้ใจเท่านั้น
คำสั่ง Docker ที่ใช้บ่อย
| คำสั่ง | ใช้ทำอะไร |
|---|---|
docker ps -a | ดูคอนเทนเนอร์ทั้งหมด รวมที่หยุดทำงานแล้ว |
docker images | ดูรายการ image ในเครื่อง |
docker logs -f <ชื่อ> | ดู log ของคอนเทนเนอร์แบบต่อเนื่อง |
docker exec -it <ชื่อ> sh | เข้าไปในคอนเทนเนอร์เพื่อตรวจสอบ |
docker compose up -d | สั่งรันบริการทั้งชุดตามไฟล์ compose แบบเบื้องหลัง |
ตัวอย่างไฟล์ docker-compose.yml
ลองรันเว็บเซิร์ฟเวอร์เล็ก ๆ ที่ตอบกลับข้อมูลของคำขอ ใช้ดูว่าพอร์ตและเครือข่ายทำงานถูกต้อง
services:
whoami:
image: traefik/whoami
ports:
- "8080:80"
restart: unless-stopped
docker compose up -d
curl http://localhost:8080
docker compose down
คำสั่ง docker system prune -a --volumes ลบ image, คอนเทนเนอร์ที่หยุด และ volume ที่ไม่ได้ใช้ทั้งหมด ข้อมูลใน volume จะหายถาวร อย่ารันบนเครื่องที่มีข้อมูลสำคัญ
แก้ปัญหาที่พบบ่อย
- permission denied … docker.sock ยังไม่ได้อยู่ในกลุ่ม
dockerหรือยังไม่ได้ล็อกอินใหม่ - ดาวน์โหลด image ไม่ได้ / timeout ตรวจ DNS และ proxy ขององค์กร
- พอร์ตถูกใช้งานอยู่ หาโปรเซสด้วย
ss -tulpn | grep :8080แล้วเปลี่ยนพอร์ตในไฟล์ compose
ทำให้ซ้ำได้ สำคัญกว่าทำให้เร็วครั้งเดียว
แนวคิดพื้นฐานของงาน Infrastructure as Code
สรุป
ตอนนี้คุณมี Docker Engine พร้อมใช้งานบน Ubuntu แล้ว ขั้นต่อไปคือลองเขียน Dockerfile ของตัวเอง และเรียนรู้การจัดการ volume กับ network เพื่อรันบริการจริง
Leave a Reply