ติดตั้ง Docker Engine บน Ubuntu 24.04 ทีละขั้นตอน

อ่านประมาณ 3 นาที

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 จะหายถาวร อย่ารันบนเครื่องที่มีข้อมูลสำคัญ

แก้ปัญหาที่พบบ่อย

  1. permission denied … docker.sock ยังไม่ได้อยู่ในกลุ่ม docker หรือยังไม่ได้ล็อกอินใหม่
  2. ดาวน์โหลด image ไม่ได้ / timeout ตรวจ DNS และ proxy ขององค์กร
  3. พอร์ตถูกใช้งานอยู่ หาโปรเซสด้วย ss -tulpn | grep :8080 แล้วเปลี่ยนพอร์ตในไฟล์ compose

ทำให้ซ้ำได้ สำคัญกว่าทำให้เร็วครั้งเดียว

แนวคิดพื้นฐานของงาน Infrastructure as Code

สรุป

ตอนนี้คุณมี Docker Engine พร้อมใช้งานบน Ubuntu แล้ว ขั้นต่อไปคือลองเขียน Dockerfile ของตัวเอง และเรียนรู้การจัดการ volume กับ network เพื่อรันบริการจริง

3 responses to “ติดตั้ง Docker Engine บน Ubuntu 24.04 ทีละขั้นตอน”

  1. สมชาย (ตัวอย่าง) Avatar
    สมชาย (ตัวอย่าง)

    ขอบคุณครับ ทำตามแล้วผ่านรวดเดียวเลย ติดแค่ขั้นตอน usermod ที่ต้องล็อกอินใหม่

    1. ผู้เขียน Avatar
      ผู้เขียน

      ใช่ครับ หลังรัน usermod ต้องล็อกเอาต์แล้วล็อกอินใหม่ หรือจะรัน newgrp docker ก็ได้

  2. มานี (ตัวอย่าง) Avatar
    มานี (ตัวอย่าง)

    มีตัวอย่างใช้ docker compose รัน SQL Server ไหมครับ อยากเอาไปทำ lab

Leave a Reply

Your email address will not be published. Required fields are marked *