
Docker 컨테이너에서 KVM 가속, 자동 설치, 사용자 지정 가능한 리소스를 사용하여 Windows를 실행합니다. 여러 Windows 버전, USB 패스스루, macvlan 네트워킹을 지원합니다.
[![Build]][build_url] [![Version]][tag_url] [![Size]][tag_url] [![Package]][pkg_url] [![Pulls]][hub_url]
Docker 컨테이너 안의 Windows.
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "11"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- ./windows:/storage
restart: always
stop_grace_period: 2m
docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
[!NOTE] Linux, macOS 및 Windows 10용 Docker Desktop은 현재 컨테이너에 KVM 액세스를 제공하지 않으므로 지원되지 않습니다.
아주 간단합니다! 다음 단계를 따르세요:
컨테이너를 시작하고 웹 브라우저에서 8006 포트에 연결하세요.
마법이 펼쳐지는 동안 편안히 기다리세요. 전체 설치가 완전 자동으로 진행됩니다.
바탕 화면이 보이면 Windows 설치가 사용할 준비가 된 것입니다.
새 머신을 즐기고 이 저장소에 스타를 꼭 남겨 주세요!
기본적으로 Windows 11 Pro가 설치됩니다. 그러나 다운로드할 다른 Windows 버전을 지정하려면 compose 파일에 VERSION 환경 변수를 추가할 수 있습니다:
environment:
VERSION: "10"
아래 값 중에서 선택하세요:
| 값 | 버전 | 크기 |
|---|---|---|
11 | Windows 11 Pro | 7.9 GB |
11l | Windows 11 LTSC | 4.7 GB |
11e | Windows 11 Enterprise | 6.6 GB |
10 | Windows 10 Pro | 5.7 GB |
10l | Windows 10 LTSC | 4.6 GB |
10e | Windows 10 Enterprise | 5.2 GB |
8e | Windows 8.1 Enterprise | 3.7 GB |
7u | Windows 7 Ultimate | 3.1 GB |
vu | Windows Vista Ultimate | 3.0 GB |
xp | Windows XP Professional | 0.6 GB |
2k | Windows 2000 Professional | 0.4 GB |
2025 | Windows Server 2025 | 7.6 GB |
2022 | Windows Server 2022 | 6.0 GB |
2019 | Windows Server 2019 | 5.3 GB |
2016 | Windows Server 2016 | 6.5 GB |
2012 | Windows Server 2012 | 4.3 GB |
2008 | Windows Server 2008 | 3.0 GB |
2003 | Windows Server 2003 | 0.6 GB |
[!TIP] Windows ARM64 버전을 설치하려면 dockur/windows-arm을 사용하세요.
스토리지 위치를 변경하려면 compose 파일에 다음 바인드 마운트를 포함하세요:
volumes:
- ./windows:/storage
예제 경로 ./windows를 원하는 스토리지 폴더 또는 named volume으로 바꾸세요.
기본 크기 64GB를 확장하려면 compose 파일에 DISK_SIZE 설정을 추가하고 원하는 용량으로 설정하세요:
environment:
DISK_SIZE: "256G"
[!TIP] 이 설정은 데이터 손실 없이 기존 디스크를 더 큰 용량으로 조정하는 데에도 사용할 수 있습니다. 다만 추가된 디스크 공간이 할당되지 않음으로 표시되므로 이후에 디스크 파티션을 수동으로 확장해야 합니다.
설치가 끝나면 바탕 화면에 Shared라는 폴더가 생기며, 이 폴더를 사용해 호스트 머신과 파일을 교환할 수 있습니다.
이 용도로 호스트의 폴더를 선택하려면 compose 파일에 다음 바인드 마운트를 포함하세요:
volumes:
- ./example:/shared
예제 경로 ./example를 원하는 공유 폴더로 바꾸면 해당 폴더가 Shared로 표시됩니다.
기본적으로 Windows는 CPU 코어 2개와 4GB RAM을 사용할 수 있습니다.
이를 조정하려면 다음 환경 변수를 사용해 원하는 용량을 지정할 수 있습니다:
environment:
RAM_SIZE: "8G"
CPU_CORES: "4"
기본적으로 Docker라는 사용자가 생성되며 암호는 admin입니다.
설치 중 다른 자격 증명을 설정하려면 compose 파일에서 구성할 수 있습니다:
environment:
USERNAME: "bill"
PASSWORD: "gates"
기본적으로 영어 버전의 Windows가 다운로드됩니다.
그러나 다운로드할 다른 언어를 지정하려면 compose 파일에 LANGUAGE 환경 변수를 추가할 수 있습니다:
environment:
LANGUAGE: "French"
다음 중에서 선택할 수 있습니다: 🇦🇪 아랍어, 🇧🇬 불가리아어, 🇨🇳 중국어, 🇭🇷 크로아티아어, 🇨🇿 체코어, 🇩🇰 덴마크어, 🇳🇱 네덜란드어, 🇬🇧 영어, 🇪🇪 에스토니아어, 🇫🇮 핀란드어, 🇫🇷 프랑스어, 🇩🇪 독일어, 🇬🇷 그리스어, 🇮🇱 히브리어, 🇭🇺 헝가리어, 🇮🇹 이탈리아어, 🇯🇵 일본어, 🇰🇷 한국어, 🇱🇻 라트비아어, 🇱🇹 리투아니아어, 🇳🇴 노르웨이어, 🇵🇱 폴란드어, 🇵🇹 포르투갈어, 🇷🇴 루마니아어, 🇷🇺 러시아어, 🇷🇸 세르비아어, 🇸🇰 슬로바키아어, 🇸🇮 슬로베니아어, 🇪🇸 스페인어, 🇸🇪 스웨덴어, 🇹🇭 태국어, 🇹🇷 터키어, 🇺🇦 우크라이나어.
선택한 언어의 기본값이 아닌 키보드 레이아웃이나 로캘을 설정하려면 다음과 같이 KEYBOARD 및 REGION 변수를 추가할 수 있습니다:
environment:
REGION: "en-US"
KEYBOARD: "en-US"
지원되지 않는 ISO 이미지를 다운로드하려면 VERSION 환경 변수에 해당 URL을 지정하세요:
environment:
VERSION: "https://example.com/win.iso"
또는 다운로드를 건너뛰고 대신 로컬 파일을 사용하려면 compose 파일에 다음과 같이 바인드하면 됩니다:
volumes:
- ./example.iso:/custom.iso
예제 경로 ./example.iso를 원하는 ISO 파일 이름으로 바꾸세요. 이 경우 VERSION 값은 무시됩니다.
설치 후 자신의 스크립트를 실행하려면 install.bat이라는 파일을 만들고 필요한 추가 파일(예: 설치할 소프트웨어)과 함께 폴더에 넣으세요.
그런 다음 compose 파일에 해당 폴더를 다음과 같이 바인드하세요:
volumes:
- ./example:/oem
예제 폴더 ./example는 C:\OEM에 복사되며 해당 폴더 안의 install.bat 파일은 자동 설치의 마지막 단계에서 실행됩니다.
가상 환경에서 Windows를 실행할 때 발생하는 일반적인 문제를 방지하기 위해 다양한 설정을 조정해 주는 자동 설치를 사용하는 것이 좋습니다.
그러나 (자기 책임 하에) 설치를 수동으로 수행하려면 compose 파일에 다음 환경 변수를 추가하세요:
environment:
MANUAL: "Y"
웹 뷰어는 주로 설치 중에 사용하도록 설계되었습니다. RDP보다 응답성이 낮고 클립보드 공유와 같은 기능을 지원하지 않기 때문입니다.
따라서 더 나은 환경을 위해 사용자 이름 Docker와 암호 admin을 사용하여 모든 Microsoft 원격 데스크톱 클라이언트로 컨테이너의 IP에 연결할 수 있습니다.
Play 스토어에서 제공되는 Android용 RDP 클라이언트와 Apple Store의 iOS용 RDP 클라이언트가 있습니다. Linux에서는 FreeRDP를 사용할 수 있고 Windows에서는 검색창에 mstsc를 입력하면 됩니다.
오디오는 RDP를 사용하지 않는 한 기본적으로 비활성화되어 있습니다. 브라우저로 스트리밍하려면 다음 환경 변수를 추가하세요:
environment:
AUDIO: "Y"
그런 다음 웹 뷰어에서 설정 → 고급 아래의 오디오를 활성화하세요. 스트림은 이 옵션이 활성화된 동안에만 동작하므로 그 외에는 추가 대역폭을 사용하지 않습니다.
기본적으로 컨테이너는 호스트와 IP 주소를 공유하는 브리지 네트워킹을 사용합니다.
컨테이너에 개별 IP 주소를 할당하려면 다음과 같이 macvlan 네트워크를 만들 수 있습니다:
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vlan
로컬 서브넷에 맞게 이 값을 반드시 수정하세요.
네트워크를 만든 후에는 compose 파일을 다음과 같이 변경하세요:
services:
windows:
container_name: windows
..<snip>..
networks:
vlan:
ipv4_address: 192.168.0.100