หมายเหตุ: ระบบที่ใช้ 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 ทางมุมขวาบน

วิธีติดตั้ง Docker บน LXC Container ใน Proxmox

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

วิธีติดตั้ง Docker บน LXC Container ใน Proxmox

ในแท็บ Disks

  • เลือก Storage ที่ต้องการใช้เก็บ container นี้
  • ส่วน Disk size เราปล่อยเป็นค่า default 8GB

ถ้าไม่พอสามารถ resize เพิ่มทีหลังได้ง่าย ๆ

วิธีติดตั้ง Docker บน LXC Container ใน Proxmox

ตั้งค่า CPU & Memory

  • CPU: 2 cores
  • Memory: 1024 MB
  • Swap: ปิด (ไม่ได้ใช้ เพราะ Proxmox ที่ใช้ ZFS ปิด swap ไปแล้ว)

ค่าพวกนี้สามารถปรับเพิ่ม/ลดทีหลังได้ตามต้องการ

วิธีติดตั้ง Docker บน LXC Container ใน Proxmox

ตั้งค่า Network จะใช้ DHCP ก็ง่ายดี แค่ปล่อยค่า default ไปเลย
แต่ถ้าอยากใช้ Static IP แนะนำตั้งแบบนี้ (แล้วแต่ subnet ที่ใช้งาน)

  • IP Address: 192.168.1.100/24
  • Gateway: 192.168.1.1

ในแท็บ DNS สามารถข้ามไปได้เลย Proxmox จะใช้ค่า DNS จาก host โดยอัตโนมัติอยู่แล้ว

วิธีติดตั้ง Docker บน LXC Container ใน Proxmox

ตรวจสอบค่าทั้งหมดในแท็บ 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 เล็กน้อย แล้วติดตั้งตามขั้นตอนก็พร้อมใช้

ขอบคุณที่อ่านครับ 🙂