Vì sao Incus ra đời và tại sao bạn nên cân nhắc chuyển đổi?
Nếu từng làm việc với Linux Containers (LXC), chắc hẳn bạn không lạ gì LXD. Bước ngoặt xảy ra vào giữa năm 2023, khi Canonical quyết định rút LXD về quản lý độc quyền và áp đặt thỏa thuận bản quyền CLA khắt khe. Ngay sau đó, đội ngũ sáng lập ban đầu của Linux Containers đã tách nhánh để phát triển Incus — một bản fork độc lập, hoàn toàn vì cộng đồng.
Điểm ăn tiền nhất? Incus dẹp bỏ hoàn toàn Snap. Bạn có một daemon thuần mã nguồn mở, cài đặt trực tiếp qua APT, RPM hay Pacman mà không bị trói buộc vào hệ sinh thái của Canonical.
Trong dàn homelab cá nhân, mình đang chạy cụm Proxmox VE quản lý 12 VM và container. Proxmox có Web UI rất tiện để theo dõi tài nguyên. Tuy nhiên, khi cần dựng máy chủ edge, máy test CI/CD hoặc làm việc trực tiếp trên laptop Arch Linux, mình cần một công cụ CLI gọn nhẹ hơn nhiều. Incus đáp ứng chính xác nhu cầu đó: vừa tạo được container siêu tốc, vừa bật được VM KVM khi cần cô lập.
Bản chất kỹ thuật: Incus hoạt động như thế nào?
Incus gom hai công nghệ ảo hóa khác nhau về chung một cú pháp quản trị duy nhất:
- System Container (LXC): Khác với Docker chỉ đóng gói một tiến trình (process container), container của Incus chạy như một OS hoàn chỉnh. Nó có tiến trình
systemdriêng, quản lý cronjob, SSH daemon bình thường nhưng dùng chung kernel với máy host. Container boot chưa tới 0.5 giây. Mức ngốn RAM khi chạy nền chỉ khoảng 25-30MB. - Micro-VM (QEMU/KVM): Dùng khi bạn bắt buộc phải có kernel riêng biệt. Ví dụ điển hình: nạp kernel module đặc thù, test distro khác nhân, hoặc chạy Docker lồng bên trong mà không muốn hạ thấp bảo mật host. Incus dùng chung cú pháp mạng và storage của container để điều khiển máy ảo KVM.
Các bước cài đặt và cấu hình Incus
1. Cài đặt trên Ubuntu và Debian qua kho Zabbly
Để không phải dùng Snap, bạn nên cài qua repository Zabbly do Stéphane Graber (trưởng dự án Incus) trực tiếp đóng gói. Các bước thực hiện trên Ubuntu 22.04 / 24.04 hoặc Debian 12:
# 1. Cài đặt các gói phụ trợ
sudo apt update
sudo apt install -y curl ca-certificates
# 2. Thêm khóa GPG của Zabbly
sudo mkdir -p /etc/apt/keyrings/
sudo curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
# 3. Khai báo repository vào APT
sudo sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo "${VERSION_CODENAME}")
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'
# 4. Cập nhật danh sách gói và cài đặt Incus
sudo apt update
sudo apt install -y incus incus-ui-canonical
# 5. Phân quyền cho user hiện tại (tránh phải gõ sudo liên tục)
sudo adduser $USER incus-admin
newgrp incus-admin
2. Khởi tạo cấu hình ban đầu với incus admin init
Chạy wizard cấu hình để thiết lập storage pool và network bridge:
incus admin init
Khi wizard hỏi về storage backend, bạn nên cân nhắc hai trường hợp:
- Có ổ đĩa hoặc phân vùng riêng: Hãy chọn ZFS hoặc Btrfs. Nhờ cơ chế Copy-on-Write, bạn có thể clone container hoặc tạo snapshot 10GB chỉ trong 1 giây mà không ngốn thêm dung lượng thực.
- Chỉ có một phân vùng root duy nhất: Chọn dir để đơn giản. Đổi lại, tốc độ snapshot và clone sẽ chậm hơn đáng kể vì hệ thống phải copy toàn bộ file.
3. Khởi tạo System Container đầu tiên
Incus kéo image trực tiếp từ máy chủ images: của Linux Containers. Kho này chứa sẵn gần như mọi distro: Alpine, Debian, Ubuntu, Rocky Linux cho đến Arch Linux.
# Khởi tạo container Debian 12
incus launch images:debian/12 debian-box
# Kiểm tra trạng thái và IP được cấp qua bridge
incus list
# Nhảy trực tiếp vào shell bên trong container
incus exec debian-box -- bash
4. Bật máy ảo KVM với cờ --vm
Thay vì cấu hình XML lằng nhằng trong virsh hay mở Virt-Manager, bạn chỉ cần thêm tham số --vm vào lệnh quen thuộc:
# Tạo máy ảo Ubuntu 24.04 có 2 vCPU và 2GB RAM
incus launch images:ubuntu/24.04 dev-vm --vm -c limits.cpu=2 -c limits.memory=2GiB
# Kiểm tra danh sách instance
incus list
Image chính thức của Incus tích hợp sẵn incus-agent. Nhờ đó, bạn chạy lệnh incus exec dev-vm -- bash để vào thẳng terminal máy ảo mà không cần mở cổng VNC hay cấu hình serial console.
5. Ba mẹo cấu hình thực tế khi vận hành
Giới hạn CPU và RAM khi container đang chạy
Bạn có thể siết tài nguyên nóng mà không cần dừng dịch vụ:
# Giới hạn mức trần 1GB RAM và 2 nhân CPU
incus config set debian-box limits.memory=1GiB
incus config set debian-box limits.cpu=2
Forward port vào container không cần đụng iptables
Incus hỗ trợ sẵn proxy device ở tầng layer 4. Cấu hình áp dụng tức thì:
# Bắn traffic từ port 8080 trên host vào thẳng port 80 của container
incus config device add debian-box web-proxy proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80
Migrate toàn bộ từ LXD sang Incus
Nếu máy chủ của bạn đang chạy LXD Snap, dự án cung cấp sẵn tool tự động để chuyển đổi nguyên trạng:
# Cài đặt công cụ migration
sudo apt install -y lxd-to-incus
# Dừng các container trước khi migrate, sau đó chạy lệnh:
sudo lxd-to-incus
Script sẽ tự nhận diện storage pool, profile mạng, import toàn bộ dữ liệu sang daemon Incus và hướng dẫn bạn gỡ bỏ hoàn toàn LXD.
Tổng kết
Incus đưa công nghệ Linux Container trở lại đúng quỹ đạo ban đầu: nhanh, gọn và trung lập. Nếu bạn muốn thoát khỏi Snap trên Ubuntu hoặc cần một CLI nhất quán để quản lý cả LXC lẫn KVM trên server Linux, Incus là lựa chọn thực tế và đáng tin cậy nhất hiện nay.

