หมายเหตุ: ระบบที่ใช้ Proxmox VE 8.4.8 พร้อมระบบไฟล์ ZFS
บทความนี้ไม่มีอะไรซับซ้อน แค่อยากมาแชร์วิธีติดตั้ง Docker บน LXC container ใน Proxmox เผื่อใครอยากลองใช้ Docker แบบเบา ๆ ไม่ต้องสร้าง VM ให้เปลืองทรัพยากร
สาเหตุที่เลือกใช้ LXC แทนการสร้าง VM
- ใช้ทรัพยากรน้อยกว่า (CPU, RAM)
- สร้างเร็ว ลบเร็ว
- Backup และ snapshot ได้ง่ายมาก
- เหมาะกับงานเบา ๆ หรือ service ที่ไม่ต้องการ isolation สูง
วิธีสร้าง LXC Container
เริ่มจากการสร้าง LXC Container กันก่อน โดยกด Create CT ทางมุมขวาบน

ต่อมาที่แท็บ Template ให้เลือก OS ที่จะใช้สำหรับ container เราเลือกใช้ debian-12-standard

ในแท็บ Disks
- เลือก Storage ที่ต้องการใช้เก็บ container นี้
- ส่วน Disk size เราปล่อยเป็นค่า default 8GB
ถ้าไม่พอสามารถ resize เพิ่มทีหลังได้ง่าย ๆ

ตั้งค่า CPU & Memory
- CPU: 2 cores
- Memory: 1024 MB
- Swap: ปิด (ไม่ได้ใช้ เพราะ Proxmox ที่ใช้ ZFS ปิด swap ไปแล้ว)
ค่าพวกนี้สามารถปรับเพิ่ม/ลดทีหลังได้ตามต้องการ

ตั้งค่า Network จะใช้ DHCP ก็ง่ายดี แค่ปล่อยค่า default ไปเลย
แต่ถ้าอยากใช้ Static IP แนะนำตั้งแบบนี้ (แล้วแต่ subnet ที่ใช้งาน)
- IP Address: 192.168.1.100/24
- Gateway: 192.168.1.1
ในแท็บ DNS สามารถข้ามไปได้เลย Proxmox จะใช้ค่า DNS จาก host โดยอัตโนมัติอยู่แล้ว

ตรวจสอบค่าทั้งหมดในแท็บ Confirm ถ้าทุกอย่างเรียบร้อยแล้ว กด Finish เพื่อสร้าง LXC Container
วิธีติดตั้ง Docker
หลังจากสร้าง LXC Container เสร็จ รันคำสั่งเพื่อเริ่มและเข้าใช้งาน LXC Container
หมายเหตุ: LXC ID ที่เราสร้างคือ 105
pct start 105
pct enter 105
เมื่อเข้ามาใน LXC Container แล้ว ให้เริ่มจากอัปเดตแพ็กเกจและติดตั้ง sudo
apt update && apt install -y sudo
จากนั้นสร้าง user สำหรับใช้งาน Docker (เพื่อหลีกเลี่ยงการรันด้วย root)
useradd -m teera
ตั้งรหัสผ่านให้ user teera
passwd teera
ระบบจะถามรหัสผ่านใหม่
New password:
Retype new password:
passwd: password updated successfully
จากนั้น ให้เพิ่มสิทธิ์ sudo ให้กับ user teera โดยไม่ต้องใส่รหัสผ่านทุกครั้ง
echo 'teera ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/user
วิธีนี้ช่วยให้สามารถใช้คำสั่ง sudo ได้สะดวกขึ้น โดยไม่ต้องพิมพ์รหัสผ่านทุกครั้งที่สั่งงาน
จากนั้นสลับไปใช้ user ที่เราสร้างขึ้น
su - teera -s /bin/bash
เมื่อรันคำสั่งนี้ จะเห็น prompt เปลี่ยนจาก root@… เป็น teera@… แสดงว่าเรากำลังใช้งานในสิทธิ์ของ user ปกติแล้วเรียบร้อย
จากนั้นอัปเดตแพ็กเกจ
sudo apt update && sudo apt upgrade -y
ต่อไปเราจะติดตั้ง Docker แบบง่าย ๆ โดยใช้วิธีติดตั้งผ่าน repository ของ Docker
ดูรายละเอียดได้ที่นี่
Install using the apt repository
เพิ่ม Docker repository
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
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" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
ติดตั้ง Docker packages
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ทดสอบรัน docker hello-world
sudo docker run hello-world
หลังจากติดตั้ง Docker เรียบร้อย เรามาจัดการ Docker โดยไม่ต้องใช้ sudo กัน
ดูรายละเอียดได้ที่นี่
Linux post-installation steps for Docker Engine
สร้าง group ชื่อ docker (ถ้ายังไม่มี)
sudo groupadd docker
เพิ่ม user ปัจจุบันเข้า group docker
sudo usermod -aG docker $USER
refresh group ของ user ปัจจุบันโดยไม่ต้อง logout
newgrp docker
ทดสอบรัน container Docker แบบไม่ต้องใช้ sudo
docker run hello-world
สรุป
ติดตั้ง Docker บน LXC ใน Proxmox ง่ายและประหยัดทรัพยากร แค่สร้าง LXC Container ปรับ config เล็กน้อย แล้วติดตั้งตามขั้นตอนก็พร้อมใช้
ขอบคุณที่อ่านครับ 🙂
