วิธีที่เร็วที่สุด: สร้างเซิร์ฟเวอร์ด้วยอิมเมจ Docker
หากสร้างเซิร์ฟเวอร์ใหม่ การเลือก Docker จากรายการอิมเมจเร็วที่สุด เริ่มต้นพร้อม Docker Engine และ Docker Compose บน Ubuntu 24.04 LTS ล็อกอินแล้วรัน docker compose up ได้ทันที รายละเอียดแอปและขนาดแนะนำอยู่ที่หน้า Docker VPS
หากต้องการเพิ่ม Docker ในเซิร์ฟเวอร์ที่ใช้อยู่ หรือใช้ระบบปฏิบัติการอื่นอย่าง Debian, AlmaLinux ให้ติดตั้งเองตามลำดับด้านล่าง ทุกคำสั่งอิงสถานะที่เชื่อมต่อด้วย root หากเชื่อมต่อด้วยผู้ใช้ทั่วไป ให้เติม sudo หน้าคำสั่ง
สิ่งที่ควรตรวจก่อนติดตั้ง
Docker ทำงานบนเซิร์ฟเวอร์ทุกขนาด สำหรับโปรเจกต์ส่วนตัวที่รันคอนเทนเนอร์ไม่กี่ตัว แผนทั่วไปขนาดเล็ก 12GB ก็เพียงพอแล้ว หากต้องการรันฐานข้อมูล เว็บเซิร์ฟเวอร์และแคชพร้อมกัน 24GB หรือมากกว่าจะให้พื้นที่เพียงพอ หากคุณดาวน์โหลดและสร้างอิมเมจบ่อย NVMe VPS ที่มีดิสก์เร็วจะทำให้เห็นความแตกต่างได้ชัดเจน
หากมีแพ็กเกจ Docker เก่าจากคลังของระบบปฏิบัติการ ให้ลบก่อนเพื่อไม่ให้ปนกับแพ็กเกจทางการ แพ็กเกจที่ไม่ได้ติดตั้งจะถูกข้ามไป จึงรันตามเดิมได้เลย
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneติดตั้ง Docker บน Ubuntu 24.04
ขั้นที่ 1 เพิ่มคีย์และที่อยู่คลัง
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
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 "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.listขั้นที่ 2 ติดตั้ง Docker Engine และ Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginเมื่อติดตั้งเสร็จ บริการ Docker จะเปิดเองอัตโนมัติ และแม้รีสตาร์ตเซิร์ฟเวอร์ก็จะเปิดด้วย คำสั่งเดียวกันใช้ได้กับ Ubuntu 22.04 และ 26.04 ด้วย ชื่อเวอร์ชันในที่อยู่คลังจะอ่านจาก /etc/os-release โดยอัตโนมัติ
ติดตั้ง Docker บน Debian 13
Debian มีลำดับเหมือน Ubuntu เพียงเปลี่ยนที่อยู่คลังเป็น linux/debian บน Debian 12 ก็ใช้คำสั่งเดียวกัน
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
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/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginติดตั้ง Docker บน AlmaLinux 10
AlmaLinux และ Rocky Linux ใช้คลัง RHEL ของ Docker ให้จัดการ Podman ที่มีมาในระบบก่อนเพื่อไม่ให้ซ้อนกัน แล้วจึงติดตั้ง บน AlmaLinux 9 และ Rocky Linux 9, 10 ก็ใช้คำสั่งเดียวกัน
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now dockerเมื่อติดตั้งครั้งแรกและระบบถามว่าจะยอมรับคีย์ลายเซ็นของคลังหรือไม่ ให้กด y ตระกูล RHEL จะไม่เปิดบริการอัตโนมัติหลังติดตั้ง จึงใช้ systemctl enable --now docker บรรทัดสุดท้ายเพื่อเปิดตอนนี้และให้เปิดตอนบูตด้วย
ตรวจการติดตั้งและคอนเทนเนอร์แรก
ลองรันคอนเทนเนอร์ทดสอบด้วยคำสั่งด้านล่างสักครั้ง หากแสดงข้อความที่ขึ้นต้นด้วย Hello from Docker แสดงว่าเอนจิน การดาวน์โหลดอิมเมจ และการรันคอนเทนเนอร์ทำงานได้ดีทั้งหมด การเติม --rm ทำให้คอนเทนเนอร์ถูกลบทันทีเมื่อรันเสร็จ
docker run --rm hello-world
docker compose versionหากต้องการให้ผู้ใช้ทั่วไปใช้ Docker ได้ ให้เพิ่มผู้ใช้นั้นเข้ากลุ่ม docker แล้วล็อกอินใหม่ กลุ่ม docker มีสิทธิ์เทียบเท่า root จึงเพิ่มเฉพาะผู้ใช้ที่ไว้ใจได้
usermod -aG docker ชื่อผู้ใช้นำบริการขึ้นด้วย Docker Compose
Compose คือวิธีเขียนการตั้งค่าคอนเทนเนอร์ไว้ในไฟล์ YAML ไฟล์เดียวแล้วเปิดด้วยบรรทัดเดียว แม้ย้ายหรือสร้างเซิร์ฟเวอร์ใหม่ มีแค่ไฟล์เดิมก็ได้สภาพแวดล้อมเดิมกลับมา ตัวอย่างไฟล์สำหรับเปิดเว็บเซิร์ฟเวอร์ Nginx หนึ่งตัวมีหน้าตาแบบนี้
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -dเปิด http://YOUR_SERVER_IP ในเบราว์เซอร์ จะพบหน้าจอ Nginx และหากใส่ index.html ในโฟลเดอร์ html ก็จะแสดงไฟล์นั้น คำสั่งที่ใช้บ่อยมีเพียงสี่คำสั่งด้านล่างก็เพียงพอ
docker compose ps: แสดงคอนเทนเนอร์ที่ทำงานอยู่และพอร์ตdocker compose logs -f: ติดตามล็อกแบบเรียลไทม์ ออกด้วย Ctrl+Cdocker compose pull && docker compose up -d: ดึงอิมเมจใหม่และเปลี่ยนคอนเทนเนอร์เป็นเวอร์ชันใหม่docker compose down: หยุดและล้างคอนเทนเนอร์ ข้อมูลใน volume ยังอยู่ครบ
เขียน restart: unless-stopped ไว้ เมื่อรีสตาร์ตเซิร์ฟเวอร์ คอนเทนเนอร์ก็จะเปิดกลับมาเอง เฉพาะคอนเทนเนอร์ที่คุณหยุดเองเท่านั้นที่จะยังหยุดอยู่
ไฟร์วอลล์และการเปิดพอร์ต
Docker ใส่พอร์ตที่เปิดด้วย ports: ลงในกฎไฟร์วอลล์ (iptables) โดยตรง พอร์ตที่ไม่ได้อนุญาตใน ufw หากเขียนใน ports: ก็จะเข้าจากภายนอกได้ ฐานข้อมูลหรือหน้าจัดการที่ไม่จำเป็นต้องเปิดสู่ภายนอก ให้ผูกไว้กับ 127.0.0.1 เท่านั้นตามด้านล่าง ก็จะเข้าได้เฉพาะภายในเซิร์ฟเวอร์
ports:
- "127.0.0.1:5432:5432"เว็บเซอร์วิสเปิดเฉพาะพอร์ต 80 และ 443 ส่วนที่เหลือให้เรียกกันด้วยชื่อบริการภายในเครือข่าย Compose เดียวกันจะเป็นระเบียบ ไฟร์วอลล์พื้นฐานของทั้งเซิร์ฟเวอร์ ให้เปิดเฉพาะ SSH, HTTP, HTTPS ตามคู่มือไฟร์วอลล์พื้นฐาน
การจัดการล็อกและดิสก์
ล็อกคอนเทนเนอร์จะสะสมไปเรื่อย ๆ หากไม่กำหนด ระบุ local log driver ใน /etc/docker/daemon.json ตามด้านล่าง ล็อกจะถูกบีบอัดและเก็บเพียงขนาดที่กำหนด บันทึกแล้วรัน systemctl restart docker จะมีผลกับคอนเทนเนอร์ที่สร้างใหม่
{
"log-driver": "local"
}อิมเมจที่ไม่ใช้และคอนเทนเนอร์ที่หยุดแล้วก็ใช้พื้นที่ดิสก์ ดูปริมาณการใช้ด้วย docker system df แล้วลบอิมเมจที่ไม่ได้ใช้อยู่ด้วย docker image prune -a เมื่อข้อมูลมากขึ้น ติด NVMe block disk ให้เซิร์ฟเวอร์แล้วใช้เป็นโฟลเดอร์ข้อมูลของ Docker ก็ได้
การปกป้องข้อมูลและขั้นต่อไป
คอนเทนเนอร์ลบและสร้างใหม่ได้ทุกเมื่อ แต่ข้อมูลใน volume สร้างใหม่ไม่ได้ ฐานข้อมูลควรเก็บไฟล์ dump เป็นประจำ และปกป้องเซิร์ฟเวอร์ทั้งเครื่องด้วยแบ็กอัปอัตโนมัติหรือสแนปช็อตไปพร้อมกันจะอุ่นใจ วิธีอยู่ในคู่มือแบ็กอัปและสแนปช็อต
ไฟล์ Compose สำหรับนำ WordPress ขึ้นด้วย Docker อยู่ในคู่มือติดตั้ง WordPress หากต้องการ deploy หลายแอปผ่านหน้าจอและติดใบรับรอง HTTPS อัตโนมัติ ลองสร้างเซิร์ฟเวอร์ด้วยอิมเมจ Coolify หรือ Dokploy ขนาดที่เหมาะสำหรับใช้กับคอนเทนเนอร์โดยเฉพาะสรุปไว้ใน Container VPS
