Docker 컨테이너 내부의 Windows.
Docker Compose를 통해:
services :
windows :
image : dockurr/windows
container_name : windows
environment :
VERSION : " 11 "
devices :
- /dev/kvm
cap_add :
- NET_ADMIN
ports :
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period : 2m
Docker CLI를 통해:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
쿠버네티스를 통해:
kubectl apply -f kubernetes.yml
매우 간단합니다! 단계는 다음과 같습니다.
컨테이너를 시작하고 웹 브라우저를 사용하여 포트 8006에 연결합니다.
마법이 일어나는 동안 편안히 앉아 휴식을 취하세요. 전체 설치가 완전 자동으로 수행됩니다.
바탕 화면이 나타나면 Windows 설치를 사용할 준비가 된 것입니다.
새로운 머신을 즐겨보세요. 이 저장소에 별표를 표시하는 것을 잊지 마세요!
기본적으로 Windows 11이 설치됩니다. 그러나 다운로드할 대체 Windows 버전을 지정하기 위해 작성 파일에 VERSION
환경 변수를 추가할 수 있습니다.
environment :
VERSION : " 11 "
아래 값 중에서 선택하세요.
값 | 버전 | 크기 |
---|---|---|
11 | 윈도우 11 프로 | 5.4GB |
11l | 윈도우 11 LTSC | 4.2GB |
11e | 윈도우 11 엔터프라이즈 | 5.8GB |
10 | 윈도우 10 프로 | 5.7GB |
10l | 윈도우 10 LTSC | 4.6GB |
10e | 윈도우 10 엔터프라이즈 | 5.2GB |
8 | 윈도우 8.1 프로 | 4.0GB |
8e | 윈도우 8.1 엔터프라이즈 | 3.7GB |
7e | 윈도우 7 엔터프라이즈 | 3.0GB |
ve | 윈도우 비스타 엔터프라이즈 | 3.0GB |
xp | 윈도우 XP 프로페셔널 | 0.6GB |
2025 | 윈도우 서버 2025 | 5.0GB |
2022 | 윈도우 서버 2022 | 4.7GB |
2019 | 윈도우 서버 2019 | 5.3GB |
2016 | 윈도우 서버 2016 | 6.5GB |
2012 | 윈도우 서버 2012 | 4.3GB |
2008 | 윈도우 서버 2008 | 3.0GB |
2003 | 윈도우 서버 2003 | 0.6GB |
팁
ARM64 버전의 Windows를 설치하려면 docur/windows-arm을 사용하세요.
저장소 위치를 변경하려면 작성 파일에 다음 바인드 마운트를 포함하십시오.
volumes :
- /var/win:/storage
예제 경로 /var/win
원하는 저장소 폴더로 바꿉니다.
기본 크기인 64GB를 확장하려면 작성 파일에 DISK_SIZE
설정을 추가하고 원하는 용량으로 설정하세요.
environment :
DISK_SIZE : " 256G "
팁
이는 데이터 손실 없이 기존 디스크의 크기를 더 큰 용량으로 조정하는 데에도 사용할 수 있습니다.
'파일 탐색기'를 열고 '네트워크' 섹션을 클릭하면 host.lan
이라는 컴퓨터가 표시됩니다. 이를 두 번 클릭하면 Data
라는 폴더가 표시됩니다. 이 폴더는 작성 파일을 통해 호스트의 모든 폴더에 바인딩될 수 있습니다.
volumes :
- /home/user/example:/data
예제 폴더 /home/user/example
\host.lanData
로 사용할 수 있습니다.
팁
더 쉽게 액세스할 수 있도록 이 경로를 Windows의 드라이브 문자에 매핑할 수 있습니다.
위 목록에서 선택할 수 없는 지원되지 않는 ISO 이미지를 다운로드하려면 VERSION
환경 변수에 해당 ISO의 URL을 지정하십시오. 예:
environment :
VERSION : " https://example.com/win.iso "
또는 다운로드를 건너뛰고 다음과 같은 방식으로 작성 파일에 바인딩하여 대신 로컬 파일을 사용할 수도 있습니다.
volumes :
- /home/user/example.iso:/custom.iso
예제 경로 /home/user/example.iso
를 원하는 ISO 파일의 파일 이름으로 바꾸십시오. 이 경우 VERSION
값은 무시됩니다.
설치 후 자신만의 스크립트를 실행하려면 install.bat
라는 파일을 생성하고 필요한 추가 파일(예: 설치할 소프트웨어)과 함께 폴더에 넣을 수 있습니다. 그런 다음 해당 폴더를 다음과 같이 작성 파일에 바인딩하십시오.
volumes :
- /home/user/example:/oem
예제 폴더 /home/user/example
설치 중에 C:OEM
에 복사되고 install.bat
포함된 폴더는 마지막 단계에서 실행됩니다.
가상 환경에서 Windows를 실행할 때 발생하는 일반적인 문제를 방지하기 위해 다양한 설정을 조정하므로 자동 설치를 고수하는 것이 가장 좋습니다.
그러나 수동으로 설치를 수행하려면 작성 파일에 다음 환경 변수를 추가하십시오.
environment :
MANUAL : " Y "
기본적으로 컨테이너는 최대 2개의 CPU 코어와 4GB의 RAM을 사용할 수 있습니다.
이를 조정하려면 다음 환경 변수를 사용하여 원하는 양을 지정할 수 있습니다.
environment :
RAM_SIZE : " 8G "
CPU_CORES : " 4 "
기본적으로 Docker
라는 사용자는 설치 중에 빈 비밀번호를 사용하여 생성됩니다.
다른 자격 증명을 사용하려면 작성 파일에서 변경할 수 있습니다.
environment :
USERNAME : " bill "
PASSWORD : " gates "
기본적으로 영어 버전의 Windows가 다운로드됩니다. 그러나 대체 언어를 지정하기 위해 LANGUAGE
환경 변수를 작성 파일에 추가할 수 있습니다.
environment :
LANGUAGE : " French "
다음 중에서 선택할 수 있습니다: ?? 아랍어, ?? 불가리아어, ?? 중국인, ?? 크로아티아어, ?? 체코어, ?? 덴마크어, ?? 네덜란드어, ?? 영어, ?? 에스토니아어, ?? 핀란드어, ?? 프랑스어, ?? 독일어, ?? 그리스어, ?? 히브리어, ?? 헝가리어, ?? 이탈리아어, ?? 일본어, ?? 한국인, ?? 라트비아어, ?? 리투아니아어, ?? 노르웨이어, ?? 폴란드어, ?? 포르투갈어, ?? 루마니아어, ?? 러시아어, ?? 세르비아어, ?? 슬로바키아어, ?? 슬로베니아어, ?? 스페인어, ?? 스웨덴어, ?? 태국어, ?? 터키어와 ?? 우크라이나 말.
선택한 언어의 기본값이 아닌 키보드 레이아웃이나 로케일을 사용하려는 경우 다음과 같이 문화 코드를 사용하여 KEYBOARD
및 REGION
변수를 추가할 수 있습니다.
environment :
REGION : " en-US "
KEYBOARD : " en-US "
메모
설치가 이미 수행된 후에는 이러한 값을 변경해도 아무런 영향이 없습니다. 이 경우 Windows 내부의 제어판을 사용하십시오.
웹뷰어는 화질이 낮고 오디오나 클립보드 등이 없기 때문에 주로 설치 중에 사용하도록 되어 있습니다.
따라서 더 나은 환경을 위해 Microsoft 원격 데스크톱 클라이언트를 사용하여 사용자 이름 Docker
사용하고 암호를 비워 두어 컨테이너의 IP에 연결할 수 있습니다.
Play Store에는 Android용 RDP 클라이언트가 있고 Apple Store에는 iOS용 RDP 클라이언트가 있습니다. Linux의 경우 FreeRDP를 사용할 수 있고 Windows의 경우 검색 상자에 mstsc
입력하면 됩니다.
기본적으로 컨테이너는 호스트와 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
....
networks :
vlan :
ipv4_address : 192.168.0.100
networks :
vlan :
external : true
이 접근 방식의 또 다른 이점은 모든 포트가 기본적으로 노출되므로 더 이상 포트 매핑을 수행할 필요가 없다는 것입니다.
중요한
이 IP 주소는 둘 사이의 통신을 허용하지 않는 macvlan 설계로 인해 Docker 호스트에서 액세스할 수 없습니다. 이것이 우려되는 경우 해결 방법으로 두 번째 macvlan을 생성해야 합니다.
macvlan용 컨테이너를 구성한 후에는 실제 PC처럼 라우터에서 IP를 요청하여 Windows가 홈 네트워크의 일부가 될 수 있습니다.
이 모드를 활성화하려면 작성 파일에 다음 줄을 추가하세요.
environment :
DHCP : " Y "
devices :
- /dev/vhost-net
device_cgroup_rules :
- ' c *:* rwm '
메모
이 모드에서는 컨테이너와 Windows가 각각 고유한 별도 IP를 갖습니다.
추가 디스크를 만들려면 다음과 같이 작성 파일을 수정하세요.
environment :
DISK2_SIZE : " 32G "
DISK3_SIZE : " 64G "
volumes :
- /home/example:/storage2
- /mnt/data/example:/storage3
다음과 같은 방법으로 디스크 장치를 작성 파일에 추가하여 직접 패스스루할 수 있습니다.
devices :
- /dev/sdb:/disk1
- /dev/sdc:/disk2
기본 드라이브(설치 중에 포맷됨)로 사용하려면 /disk1
사용하고, 보조 드라이브(변경되지 않은 상태로 유지됨)로 추가하려면 /disk2
이상을 사용하세요.
USB 장치를 통과하려면 먼저 lsusb
명령을 통해 해당 공급업체 및 제품 ID를 조회한 후 다음과 같이 작성 파일에 추가하세요.
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
중요한
장치가 USB 디스크 드라이브인 경우 설치가 완료될 때까지 기다린 후 연결하십시오. 그렇지 않으면 디스크 순서가 다시 정렬되어 설치에 실패할 수 있습니다.
Linux와 Windows 11만 KVM 가상화를 지원하지만, macOS와 Windows 10은 안타깝게도 지원하지 않습니다.
Linux에서 다음 명령을 실행하여 시스템을 확인할 수 있습니다.
sudo apt install cpu-checker
sudo kvm-ok
KVM을 사용할 수 없다는 오류가 kvm-ok
에서 수신되면 다음 사항을 확인하십시오.
BIOS에서 가상화 확장( Intel VT-x
또는 AMD SVM
)이 활성화되어 있습니다.
가상 머신 내에서 컨테이너를 실행하는 경우 "중첩 가상화"를 활성화했습니다.
대부분의 클라우드 제공업체는 VPS에 중첩된 가상화를 허용하지 않기 때문에 클라우드 제공업체를 사용하고 있지 않습니다.
kvm-ok
에서 오류가 수신되지 않았지만 컨테이너가 여전히 KVM에 대해 불만을 표시하는 경우 다음 사항을 확인하십시오.
KVM을 지원하지 않으므로 "Linux용 Docker Desktop"을 사용하지 않고 대신 Docker 엔진을 직접 사용하십시오.
권한 문제를 배제하기 위해 compose 파일(또는 docker run
명령에 sudo
)에 privileged: true
추가하는 것이 도움이 될 수 있습니다.
이를 위해 docur/macos를 사용할 수 있습니다. 자동 설치를 제외하고는 많은 동일한 기능을 공유합니다.
예, 이 프로젝트에는 오픈 소스 코드만 포함되어 있으며 저작권이 있는 자료를 배포하지 않습니다. 코드에 있는 모든 제품 키는 Microsoft에서 평가판 목적으로 제공한 일반적인 자리 표시자일 뿐입니다. 따라서 모든 관련 법률에 따라 이 프로젝트는 합법적인 것으로 간주됩니다.
이 프로젝트에서 언급된 제품 이름, 로고, 브랜드 및 기타 상표는 해당 상표 소유자의 자산입니다. 이 프로젝트는 Microsoft Corporation과 제휴, 후원 또는 보증을 받지 않습니다.