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:
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)
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:
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>
Mở Remmine
lên và nhập thông tin:
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 đó.
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):
Tham khảo: https://github.com/trannguyenhan/
All rights reserved
Bình luận