Hướng dẫn cài đặt và sử dụng Multipass: Tạo máy ảo Ubuntu qua CLI chỉ trong 20 giây

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Chuyện muôn thuở: Dựng môi trường test cục bộ tốn quá nhiều thời gian

Hồi mới đi làm, mỗi lần cần dựng cụm test—như chạy thử Docker Swarm 2 node hay tái hiện bug chỉ dính trên Ubuntu Server—mình thường bay nguyên buổi sáng. Cài trực tiếp lên máy dev thì sợ rác OS và xung đột phiên bản runtime. Tải file ISO 2.6GB về máy rồi mở VirtualBox bấm chuột mỏi tay: chỉnh RAM, gắn card mạng Bridge, gõ username, mật khẩu. Làm đi làm lại vài ba máy là hết pin cả người lẫn laptop.

Ở nhà mình có dàn homelab chạy Proxmox với hơn chục VM. Dù vậy, không phải lúc nào mình cũng ngồi ôm server hay có mạng ổn định để VPN về. Ra quán cà phê mở laptop lên, cái mình cần chỉ là một chiếc Ubuntu sạch để thử nhanh đoạn script shell trong 10 phút rồi xoá không dấu vết.

Các giải pháp quen thuộc đang vướng ở đâu?

Tại sao việc kiếm một OS biệt lập trên máy cá nhân lại hay gặp phiền toái? Điểm qua các công cụ quen thuộc:

  • VirtualBox / VMware Workstation: Giao diện đồ họa ăn nhiều RAM (thường ngốn tối thiểu 1.5–2GB RAM nền). Thao tác chuột thủ công, khó viết script để tự động hóa khi cần spin-up nhiều node.
  • Vagrant: Tự động hóa tốt nhưng file Vagrantfile rườm rà. Tốc độ kéo box lần đầu khá chậm và hay lỗi mạng bridge khi VirtualBox nâng cấp bản mới.
  • WSL2 trên Windows: Rất tiện để gõ lệnh hàng ngày. Tuy nhiên, WSL2 chia sẻ chung kernel và network namespace với Windows qua NAT ngầm. Khi cần test cấu hình systemd sâu, dựng tường lửa UFW/iptables độc lập hay gán dải IP riêng cho từng node, bạn sẽ gặp nhiều giới hạn khó chịu.
  • Docker: Container dùng chung kernel với máy host. Docker không thể thay thế máy ảo nếu bạn cần test kernel module, chạy systemd init từ đầu hoặc giả lập môi trường mạng cô lập hoàn toàn.

Multipass: Máy ảo Ubuntu thu nhỏ của Canonical

Multipass do chính Canonical (công ty mẹ của Ubuntu) phát triển. Thay vì bắt bạn tự cài đặt qua ISO, công cụ này kéo thẳng Ubuntu Cloud Image chính chủ cực nhẹ. Multipass tận dụng hypervisor có sẵn của hệ điều hành: KVM trên Linux, Hyper-V trên Windows và Hypervisor.framework trên macOS. Nhờ đó, máy ảo khởi động và cấp phát IP chỉ mất khoảng 15 đến 20 giây.

1. Cài đặt Multipass

Trên Linux (Ubuntu, Debian, Fedora, Arch)

Multipass được đóng gói sẵn qua Snap. Mở terminal và chạy hai lệnh sau:

sudo snap install multipass
multipass version

Trên Windows 10/11

Cách nhanh nhất là dùng WinGet trong PowerShell (chạy quyền Administrator):

winget install Canonical.Multipass

Multipass mặc định dùng Hyper-V (yêu cầu Windows bản Pro hoặc Enterprise). Nếu đang dùng Windows Home, bạn có thể chuyển driver nền tảng sang VirtualBox bằng lệnh multipass set local.driver=virtualbox.

2. Khởi tạo máy ảo đầu tiên

Không cần mở bất kỳ cửa sổ GUI nào. Toàn bộ thao tác gói gọn trong terminal.

Tạo máy ảo với cấu hình tuỳ chọn

Để tạo máy ảo chạy Ubuntu LTS mới nhất tên là dev-box, cấp 2 core CPU, 2GB RAM và 10GB ổ cứng:

multipass launch --name dev-box --cpus 2 --memory 2G --disk 10G

Nếu cần chỉ định phiên bản cụ thể (ví dụ 22.04 thay vì bản mới nhất):

multipass launch 22.04 --name worker-node --cpus 1 --memory 1G --disk 8G

Kiểm tra danh sách và IP

multipass list

Terminal sẽ trả về trạng thái kèm địa chỉ IPv4 nội bộ:

Name                    State             IPv4             Image
dev-box                 Running           10.147.214.45    Ubuntu 24.04 LTS
worker-node             Running           10.147.214.88    Ubuntu 22.04 LTS

3. Thao tác bên trong máy ảo

Vào thẳng shell không cần setup SSH key

Multipass tự map phiên làm việc vào tài khoản ubuntu sẵn quyền sudo:

multipass shell dev-box

Khi muốn quay lại máy host, bạn chỉ cần gõ exit.

Chạy lệnh từ xa mà không cần SSH

Nếu bạn chỉ muốn cài gấp một package hoặc check port từ máy host, dùng cờ exec:

multipass exec dev-box -- sudo apt update && sudo apt install -y nginx
multipass exec dev-box -- curl -I http://localhost

4. Mount thư mục code giữa máy host và VM

Bạn có thể mở VS Code trên máy host để gõ code, rồi mount trực tiếp thư mục đó vào trong máy ảo để chạy runtime:

# Cú pháp: multipass mount <path-máy-host> <tên-vm>:<path-trong-vm>
mkdir -p ~/my-project
multipass mount ~/my-project dev-box:/home/ubuntu/project

Mọi chỉnh sửa file ở ~/my-project lập tức phản chiếu vào /home/ubuntu/project bên trong VM mà không cần dùng lệnh scp hay rsync.

5. Lưu trạng thái với Snapshot

Trước khi chạy thử script cài đặt phức tạp hoặc can thiệp sâu vào file cấu hình hệ thống, hãy chụp một snapshot để đề phòng lỗi:

# Tạo bản lưu trạng thái
multipass snapshot dev-box --name clean-state

# Khôi phục lại trạng thái cũ chỉ sau vài giây
multipass restore dev-box.clean-state

6. Dọn dẹp tài nguyên sau khi test xong

Khi hoàn thành công việc, bạn giải phóng ổ cứng và RAM chỉ với ba lệnh:

# Tạm dừng máy ảo khi nghỉ trưa để tiết kiệm RAM
multipass stop dev-box

# Đưa máy ảo vào hàng đợi xoá
multipass delete dev-box

# Xoá triệt để dữ liệu đĩa cứng
multipass purge

Tóm lại

Thay vì mất 30 phút vật lộn với file ISO hay cấu hình mạng, Multipass rút gọn luồng làm việc xuống đúng 4 thao tác: launch để lấy môi trường sạch, mount để đưa code vào, shell để chạy thử, và purge để dọn dẹp. Đây là công cụ cực kỳ đáng có trong terminal của bất kỳ lập trình viên hay kỹ sư DevOps nào cần môi trường Linux biệt lập, nhanh và nhẹ.

Share: