Windows Guest - gnh1201/docker-qemu GitHub Wiki
Windows Guest on Docker (Linux Host)
-
Download and create a combined ISO
- Windows 10 Image: https://www.microsoft.com/ko-kr/software-download/windows10 (If you change the user agent to iPhone, you can download the ISO file.)
- VirtIO Driver
- ImgBurn: https://www.imgburn.com/ (like as below)
- Options:
MODE1/2048, UDF, 1.02, Recurse Subdirectories, Include Hidden Files, Include System Files - Bootable Disc: Mark the checkbox
Make Image Bootable, and set the fields to[image path]\boot\etfsboot.com, 80x86, Microsoft Corporation, 07C0, 8
- Options:
Extract the two ISO files and combine them into one ISO file. (e.g.
win10_x64_virtio.iso)And then, load the drivers -
vioscsi\w10\amd64(SCSI) andNetKVM\w10\amd64(Network) - when installing Windows 10 -
Build the Docker image
# git clone https://github.com/gnh1201/docker-qemu && cd docker-qemu/6.1 # docker build -t gnh1201/qemu:6.1 .or use Docker Hub
# docker pull gnh1201/qemu:6.1 -
Write the bash file (e.g.
win10-virtio.sh)#!/bin/bash docker run -it --rm \ --device /dev/kvm \ --name win10-virtio \ --user="$(id --user):$(id --group)" \ -v /home/john/win10-virtio.qcow2:/tmp/hda.qcow2 \ -e QEMU_HDA=/tmp/hda.qcow2 \ -e QEMU_HDA_SIZE=50G \ -e QEMU_CPU=3 \ -e QEMU_RAM=3072 \ -v /cdimages/win10_x64_virtio.iso:/tmp/debian.iso:ro \ -e QEMU_CDROM=/tmp/debian.iso \ -e QEMU_BOOT='order=d' \ -e QEMU_PORTS='2375 2376 3389' \ -e QEMU_ARCH='x86_64' \ gnh1201/qemu:6.1The example(
/home/john/win10-virtio.qcow2and/cdimages/win10_x64_virtio.iso) have to replace with your own path.If you want to allow RDP external access, please add
EXPOSE 3389to the file6.1/Dockerfile(Must be rebuilt image) -
Run a container
# touch /home/john/win10-virtio.qcow2 # ./win10-virtio.sh -
Find an IP address of the container
# docker ps # get the container ID # docker inspect <container ID> # get an IP address -
Connect to the container via VNC
- Reminna: https://remmina.org/
Access the container with a client capable of accessing the VNC protocol.
All done.
If you have any questions, contact me.