+2

Cài đặt Windows OS trên Docker và Remote bằng Remote Desktop

Docker là một công cụ phổ biến giúp tạo và quản lý các container, mang lại sự linh hoạt và hiệu quả cho việc phát triển và triển khai phần mềm. Chúng ta có thể biết nhiều hơn về việc sử dụng Docker để cài và quản lý các ứng dụng chạy trên nền Linux, tuy nhiên hoàn toàn có thể cài một hệ điều hành Windows chạy trong Docker! Bài viết này mình sẽ hướng dẫn chi tiết về cài đặt Windows với Docker.

Demo

Demo cài đặt và hướng dẫn sơ bộ mọi người có thể truy cập qua link dưới:

Screenshot from 2025-01-27 16-55-53.png

Clone Project

Clonet project về từ Repo: https://github.com/trannguyenhan/windows-docker-container

git clone git@github.com:trannguyenhan/windows-docker-container.git
cd windows-docker-container

docker-compose file

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
  • USERNAME, PASSWORD là tài khoản, mật khẩu người dùng mặc định khi tạo
  • /media/trannguyenhan/USB1/data cho biết ổ mount data dữ liệu giữa máy chủ với container

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"]

Thay đổi các tham số RAM, CPU và DISK trong Dockerfile bằng thông số thích hợp phù hợp với máy cá nhân trước khi chạy.

Run Project và Connect Remote Desktop

Chạy lệnh sau để bắt đầu:

docker-compose up

Sau khi chạy xong, chờ tầm 1p để setup và truy cập vào URL http://localhost:8006/ để xem tiến trình cài đặt Win (mọi thao tác đều là tự động, chúng ta chỉ cần chờ setup xong, chi tiết xem trong Video)

image.png

Sau khi hoàn tất cài đặt chúng ta sẽ nhìn thấy cửa sổ hiện ra là windows như hình dưới:

image.png

Tới đây các bạn có thể sử dụng web để truy cập và thao tác trên hệ điêu hành như bình thường, tuy nhiên việc thao tác vậy hơi kém thân thiện và gây cảm giác khó chịu thì đừng lo, chúng ta có thể truy cập qua Remote Desktop.

Với Ubuntu đã cài đặt sẵn phần mềm Remmina để Remote Desktop, chúng ta sẽ sử dụng nó.

Đầu tiên là kiểm tra IP của container:

docker ps

Lấy ID container cho câu lệnh dươi:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id>

image.png

Mở Remmine lên và nhập thông tin:

image.png

Username/Password là Username/Password đã được setup trong EVN Docker. Port nếu không nhập là port mặc định là 3389.

Truy cập qua Remote Desktop sẽ mượt hơn, giống như bạn đang thuê VPS và truy cập vào VPS đó.

image.png

Chuyển dữ liệu

Vào windows explorer -> Chọn Network -> Chọn host.lan -> Chọn Data, thư mục này sẽ đồng bộ 1-1 với thư mục /media/trannguyenhan/USB1/data được setup ở trong docker-compose file (Chi tiết xem trong video):

image.png

Tham khảo: https://github.com/trannguyenhan/


All rights reserved

Bình luận

Đang tải thêm bình luận...
Avatar
+2
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí