Cài đặt Hệ điều hành Windows trên Docker và Truy cập từ xa qua Remote Desktop
Docker là một công cụ mạnh mẽ cho phép người dùng tạo và quản lý các container, mang lại hiệu suất cao và tính linh hoạt trong việc phát triển và triển khai ứng dụng. Mặc dù Docker thường được sử dụng để chạy các ứng dụng trên nền tảng Linux, nhưng bạn hoàn toàn có thể cài đặt một hệ điều hành Windows trong Docker. Bài viết này sẽ cung cấp hướng dẫn chi tiết cách cài đặt Windows trên Docker và cách truy cập từ xa bằng Remote Desktop.
Nội dung bài viết
- Demo cài đặt và hướng dẫn
- Clone Project
- Tạo file docker-compose
- Dockerfile để build Windows
- Chạy Project và kết nối Remote Desktop
- Chuyển dữ liệu giữa máy chủ và container
Demo cài đặt và hướng dẫn
Bạn có thể truy cập vào demo cài đặt chi tiết qua link dưới đây.
Clone Project
Bạn có thể clone project từ kho GitHub sau:
bash
git clone git@github.com:trannguyenhan/windows-docker-container.git
cd windows-docker-container
Tạo file docker-compose
Tạo một file docker-compose.yml
với nội dung sau:
yaml
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "11"
USERNAME: "admin"
PASSWORD: "admin"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period: 2m
volumes:
- ./win:/storage
- /media/trannguyenhan/USB1/data:/data
Lưu ý:
USERNAME
vàPASSWORD
sẽ là tài khoản và mật khẩu người dùng mặc định khi khởi tạo container.- Dòng lệnh
/media/trannguyenhan/USB1/data
chỉ định thư mục trên máy chủ sẽ được mount vào container.
Dockerfile để build Windows
Tạo một file Dockerfile với nội dung như sau:
dockerfile
ARG VERSION_ARG="latest"
FROM scratch AS build-amd64
COPY --from=qemux/qemu-docker:6.13 / /
ARG DEBCONF_NOWARNINGS="yes"
ARG DEBIAN_FRONTEND="noninteractive"
ARG DEBCONF_NONINTERACTIVE_SEEN="true"
RUN set -eu && \
apt-get update && \
apt-get --no-install-recommends -y install \
bc \
jq \
curl \
7zip \
wsdd \
samba \
xz-utils \
wimtools \
dos2unix \
cabextract \
genisoimage \
libxml2-utils \
libarchive-tools && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY --chmod=755 ./src /run/
COPY --chmod=755 ./assets /run/assets
ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.44-0/virtio-win-1.9.44.tar.xz /drivers.txz
FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64
FROM build-${TARGETARCH}
ARG VERSION_ARG="0.00"
RUN echo "$VERSION_ARG" > /run/version
VOLUME /storage
EXPOSE 8006 3389
ENV VERSION="11"
ENV RAM_SIZE="8G"
ENV CPU_CORES="4"
ENV DISK_SIZE="60G"
ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"]
Trước khi chạy, hãy thay đổi các tham số RAM, CPU và DISK trong Dockerfile để phù hợp với cấu hình máy tính của bạn.
Chạy Project và kết nối Remote Desktop
Để bắt đầu cài đặt hệ điều hành Windows, bạn sử dụng lệnh sau:
bash
docker-compose up
Sau khi lệnh thực thi, đợi khoảng 1 phút để quá trình setup hoàn tất. Bạn có thể truy cập vào địa chỉ http://localhost:8006/ để theo dõi tiến trình cài đặt Windows. Tất cả các thao tác đều diễn ra tự động, bạn chỉ cần chờ cho quá trình cài đặt hoàn tất.
Khi quá trình cài đặt kết thúc, bạn sẽ có thể thấy giao diện Windows hiển thị trên trình duyệt. Tuy nhiên, thao tác trên trình duyệt có thể không tiện lợi bằng việc sử dụng Remote Desktop. Vì vậy, chúng ta sẽ kết nối thông qua Remote Desktop.
Trên hệ điều hành Ubuntu, bạn có thể sử dụng phần mềm Remmina
để kết nối Remote Desktop. Đầu tiên, kiểm tra địa chỉ IP của container:
bash
docker ps
Lấy ID của container và sử dụng lệnh sau để xác định địa chỉ IP:
bash
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id>
Mở Remmina
, nhập thông tin Username/Password là tài khoản đã setup trong môi trường Docker. Mặc định, cổng kết nối là 3389 nếu không thay đổi.
Sử dụng Remote Desktop sẽ mang lại trải nghiệm mượt mà hơn, giống như bạn đang quản lý một VPS từ xa.
Chuyển dữ liệu giữa máy chủ và container
Để chuyển dữ liệu giữa máy chủ và Windows container, bạn có thể vào Windows Explorer
, chọn Network
, sau đó chọn host.lan
và tìm thư mục Data
. Thư mục này sẽ đồng bộ trực tiếp với thư mục /media/trannguyenhan/USB1/data
được thiết lập trong file docker-compose.
Trên đây là hướng dẫn chi tiết về cách cài đặt và truy cập hệ điều hành Windows trên Docker qua Remote Desktop. Hy vọng bài viết sẽ giúp bạn có thêm kinh nghiệm trong việc sử dụng Docker cho các nhu cầu phát triển và thử nghiệm hệ điều hành Windows.
source: viblo