Menu

10/18/26

LAB TRIỂN KHAI WINDOWS 11 QUA DOCKER

 


LAB TRIỂN KHAI WINDOWS 11 QUA DOCKER

VMware Workstation  →  Debian 13  →  Docker  →  QEMU/KVM  →  Windows 11  →  noVNC


1. Tổng quan & trạng thái hiện tại

Mục tiêu: chạy máy ảo Windows 11 bên trong QEMU/KVM do container dockurr/windows quản lý trên Debian. Truy cập màn hình bằng Chrome/noVNC qua cổng 8006. Windows không phải container Windows thuần và cũng không được cài trực tiếp đè lên Debian.

Lớp

Cấu hình lab đã ghi nhận

Máy chủ ảo hóa

VMware Workstation (trên máy Windows)

Máy Debian

Debian 13, kernel 6.12.111+deb13-amd64; tên VM trên VMware hiển thị Debian 12.x

Tài nguyên Debian VM

4 vCPU • 16 GB RAM • virtual disk 150 GiB

Địa chỉ Debian

192.168.1.14 (LAN, SSH root)

KVM

VT-x: Full; /dev/kvm có mặt

Docker

Engine 29.9.1 • Compose v5.6.0 • hello-world thành công

Disk OS

/dev/sda1 ext4 ~18.9 GiB; /dev/sda5 swap ~1.1 GiB

Disk lab

/dev/sda3 ext4 ~130 GiB; mount /opt/windows11-lab

Windows 11 VM

2 vCPU • 8 GB RAM • disk 80 GB (cấu hình đã nhập)

Web viewer

http://192.168.1.14:8006

 


2. Sơ đồ kiến trúc

Windows PC (VMware Workstation)

   └─ VM Debian 13 [4 vCPU / 16 GB RAM / 150 GiB disk]

       ├─ /dev/sda1  18.9 GiB → Debian root / + Docker Engine

       ├─ /dev/sda5   1.1 GiB → Swap

       └─ /dev/sda3   ~130 GiB → /opt/windows11-lab

           └─ Docker Compose: windows11 [dockurr/windows]

               └─ QEMU/KVM [2 vCPU / 8 GB / 80 GB virtual disk]

                   └─ Windows 11 → noVNC :8006 / RDP :3389

 

3. Chuẩn bị VMware & xác minh KVM

Trong VMware: tắt VM → VM Settings → Processors → bật “Virtualize Intel VT-x/EPT or AMD-V/RVI”. Network Adapter đặt Bridged để Debian nhận IP trong LAN (trường hợp lab này dùng 192.168.1.14).

lscpu | grep -E 'Model name|Virtualization|Virtualization type'

ls -l /dev/kvm

free -h

hostname -I

 

Kết quả đã đạt: CPU báo VT-x, virtualization type full và /dev/kvm tồn tại. Nếu mất /dev/kvm, kiểm tra lại Nested Virtualization trong VMware và cấu hình ảo hóa trên host.

4. Cài Docker trên Debian 13

Các lệnh đã áp dụng qua SSH root, sử dụng kho Docker chính thức dành cho Debian trixie:

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

cat > /etc/apt/sources.list.d/docker.sources <<EOF

Types: deb

URIs: https://download.docker.com/linux/debian

Suites: trixie

Components: stable

Architectures: amd64

Signed-By: /etc/apt/keyrings/docker.asc

EOF

apt update

apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

systemctl enable --now docker

 

docker --version

docker compose version

docker run --rm hello-world

 

Đã xác nhận màn hình “Hello from Docker!”; 

5. Chuẩn bị ổ đĩa riêng ~130 GiB 

VMware đã tăng ổ /dev/sda lên 150 GiB, nhưng root /dev/sda1 vẫn ~19 GiB. Để tránh đụng vào root và swap, lab tạo phân vùng primary mới từ 20 GiB tới cuối ổ. Lưu ý: lệnh mkfs.ext4 xóa dữ liệu phân vùng đích; chỉ chạy lại khi chủ động muốn xóa dữ liệu.

# Lệnh đã thực hiện trong lab - KHÔNG cần chạy lại

parted /dev/sda unit GiB print free

parted -s -a optimal /dev/sda mkpart primary ext4 20GiB 100%

partprobe /dev/sda

lsblk

mkfs.ext4 /dev/sda3

mkdir -p /opt/windows11-lab

mount /dev/sda3 /opt/windows11-lab

 

Dòng mount duy nhất được cấu hình trong /etc/fstab:

UUID=6732f1f9-3023-41db-b7cc-fc787d6482fa /opt/windows11-lab ext4 defaults,nofail 0 2

 

Dòng UUID gắn theo kết quả blkid thực tế của máy. Không sao chép sang VM khác khi UUID khác. Trong quá trình thao tác đã từng phát sinh các dòng sai do nhập lệnh; chúng đã được sửa bằng nano.

systemctl daemon-reload

findmnt --verify --verbose

df -h /opt/windows11-lab

findmnt /opt/windows11-lab

 

Kết quả findmnt --verify đã ghi nhận: 0 parse errors, 0 errors, 1 warning về CD-ROM (udf/iso9660). Cần dùng df/findmnt xác nhận /dev/sda3 đang mount trước khi vận hành lab.

6. Tạo Windows 11 bằng Docker Compose

mkdir -p /opt/windows11-lab/{windows,shared}

cd /opt/windows11-lab

nano compose.yaml

 

Nội dung cấu hình tham chiếu cho lab. PASSWORD dưới đây là chỗ giữ chỗ, KHÔNG dùng nguyên mẫu; trong file thực tế hãy giữ mật khẩu riêng và phân quyền hạn chế:

services:

  windows11:

    image: dockurr/windows:latest

    container_name: windows11

    environment:

      VERSION: "11"

      RAM_SIZE: "8G"

      CPU_CORES: "2"

      DISK_SIZE: "80G"

      USERNAME: "labadmin"

      PASSWORD: "<MAT_KHAU_MANH_CUA_BAN>"

    devices:

      - /dev/kvm

      - /dev/net/tun

    cap_add:

      - NET_ADMIN

    ports:

      - "8006:8006"

      - "3389:3389/tcp"

      - "3389:3389/udp"

    volumes:

      - ./windows:/storage

      - ./shared:/shared

    restart: unless-stopped

    stop_grace_period: 2m

 

cd /opt/windows11-lab

chmod 600 compose.yaml

docker compose config -q

docker compose up -d

docker logs -f windows11

 

Kết quả đã quan sát: image dockurr/windows:latest được pull; mạng windows11-lab_default tạo mới; container windows11 started; sau đó “Requesting Windows 11 from the Microsoft servers...” và “Downloading Windows 11...”.




7. Theo dõi tải ISO & cài đặt tự động

Truy cập trên máy cùng LAN bằng Chrome: http://192.168.1.14:8006. Trên màn hình quan sát được biểu tượng Windows, dòng “Downloading Windows 11” và thanh tiến độ. Tiếp tục chờ tới khi hệ thống chuyển sang màn hình cài đặt và cuối cùng là desktop. Tốc độ phụ thuộc kết nối Microsoft, không nên khởi động lại container khi vẫn đang tải.



Ảnh thực tế: trang noVNC của lab tại thời điểm Windows 11 đang tải (18/10/2026).

# Mở một tab SSH khác để theo dõi

docker ps

docker logs --tail 50 windows11

docker stats --no-stream windows11

df -h /opt/windows11-lab

du -sh /opt/windows11-lab/windows

 

Chú ý: du -sh không nhất thiết phản ánh ISO đang tải nếu phần mềm sử dụng đường dẫn tạm bên trong container. Không suy ra bị treo chỉ vì thư mục windows chưa tăng dung lượng.

8. Công việc sau khi Windows 11 cài xong

·         Xác nhận thấy Windows 11 Desktop qua http://192.168.1.14:8006.

·         Mở Task Manager để xem CPU/RAM của Windows; kiểm tra tài nguyên QEMU theo cấu hình.

·         Trong Windows chạy winver và ipconfig /all để ghi nhận phiên bản, IP Windows nội bộ.

·         Đăng nhập tài khoản được tạo trong quá trình cài; không đưa mật khẩu vào tài liệu báo cáo.

·         Nếu cần dùng RDP, thử mstsc tới 192.168.1.14:3389 sau khi Windows hoàn tất khởi động và dịch vụ RDP đã sẵn sàng.

·         Kích hoạt Windows bằng giấy phép hợp lệ khi áp dụng.

·         Kiểm tra snapshot/backup phù hợp trước khi nâng cấp hoặc thay đổi lớn.

9. Lệnh quản trị & khắc phục sự cố

Mục đích

Lệnh / hướng xử lý

Trạng thái

docker ps -a

Log

docker logs --tail 100 windows11

CPU/RAM

docker stats --no-stream windows11

Dừng / chạy lại

cd /opt/windows11-lab && docker compose stop / start

Khởi động lại

docker restart windows11 (chỉ sau khi biết Windows không còn cài/tải)

Kiểm tra KVM

ls -l /dev/kvm

Kiểm tra ổ đĩa

findmnt /opt/windows11-lab && df -h /opt/windows11-lab

Mở cổng 8006

ss -lnt | grep 8006

Sao lưu dữ liệu

Sao lưu thư mục /opt/windows11-lab/windows khi VM/Windows đã tắt an toàn

 

Nếu noVNC không mở được: kiểm tra container, IP LAN, VMware Bridged, firewall và lắng nghe cổng. Nếu Windows chậm: kiểm tra CPU/RAM cấp cho cả Debian và Windows, KVM, tài nguyên CPU vật lý. Không dùng docker compose down -v khi chưa hiểu rõ cấu hình volume.

10. Lưu ý an toàn & bảo trì

·         Chỉ cho phép truy cập 8006/3389 trong LAN hoặc qua VPN đáng tin cậy; không NAT/port-forward các cổng này trực tiếp ra Internet.

·         Giao diện noVNC trong hình hiện dùng HTTP (“Not secure”); nếu truy cập ngoài máy nội bộ, dùng VPN hoặc reverse proxy TLS và cơ chế xác thực.

·         Giữ file compose.yaml có mật khẩu ở quyền 600; không chia sẻ file cấu hình thực tế nếu chứa mật khẩu.

·         Trước khi reboot VMware VM, nên tắt Windows từ menu Start hoặc cho container dừng mềm.

·         Container chạy Windows dưới QEMU/KVM; cần license Windows hợp lệ.

·         Windows 11 hiện vẫn đang tải tại thời điểm chốt tài liệu; các bước kiểm tra sau cài là checklist chưa thực hiện.

11. Tài liệu tham khảo

Docker Engine Debian: https://docs.docker.com/engine/install/debian/

Dự án dockurr/windows: https://github.com/dockur/windows

Tài liệu GParted (nếu cần bảo trì phân vùng): https://gparted.org/

Tài liệu này được lập từ thao tác và ảnh chụp đã chia sẻ trong phiên hướng dẫn; một số kết quả sau khi Windows cài xong cần cập nhật về sau.

No comments:

Post a Comment