
Dockerコンテナ内でKVMアクセラレーション、自動インストール、カスタマイズ可能なリソースを使用してWindowsを実行します。複数のWindowsバージョン、USBパススルー、macvlanネットワーキングをサポートしています。
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アクセスを提供しておらず、サポートされていません。
とても簡単です!以下の手順です:
コンテナを起動し、Webブラウザでポート8006に接続します。
魔法が起こるのを待つだけです。インストール全体が完全に自動で実行されます。
デスクトップが表示されたら、Windowsのインストール完了です。
新しいマシンをお楽しみください。このリポジトリにスターを忘れずに!
デフォルトではWindows 11 Proがインストールされます。しかし、composeファイルに環境変数VERSIONを追加することで、別のWindowsバージョンをダウンロードするように指定できます:
environment:
VERSION: "10"
以下の値から選択してください:
[!TIP] ARM64版Windowsをインストールするにはdockur/windows-armを使用してください。
ストレージ場所を変更するには、composeファイルに以下のバインドマウントを含めてください:
volumes:
- ./windows:/storage
例のパス./windowsを希望のストレージフォルダまたは名前付きボリュームに置き換えてください。
デフォルトの64 GBを拡張するには、composeファイルにDISK_SIZE設定を追加し、希望の容量に設定します:
environment:
DISK_SIZE: "256G"
[!TIP] データを失うことなく既存のディスクをより大きな容量にリサイズするためにも使用できます。ただし、追加されたディスク領域は未割り当てとして表示されるため、その後手動でディスクパーティションを拡張する必要があります。
インストール後、デスクトップにSharedというフォルダが作成され、ホストマシンとのファイル交換に使用できます。
この目的でホスト上のフォルダを選択するには、composeファイルに以下のバインドマウントを含めてください:
volumes:
- ./example:/shared
例のパス./exampleを希望の共有フォルダに置き換えてください。そのフォルダがSharedとして表示されます。
デフォルトでは、Windowsは2つのCPUコアと4 GBの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ファイルに以下の環境変数を追加します:
MANUAL: "Y"
Webビューアーは主にインストール中に使用することを目的としており、RDPよりも応答性が低く、クリップボード共有などの機能をサポートしていません。
そのため、より良い体験を得るには、Microsoftリモートデスクトップクライアントを使用してコンテナのIPに接続し、ユーザー名Docker、パスワードadminを使用してください。
RDPクライアントは、PlayストアからAndroid用、AppleストアからiOS用が入手可能です。LinuxではFreeRDPを使用でき、Windowsでは検索ボックスにmstscと入力するだけです。
RDPを使用している場合を除き、オーディオはデフォルトで無効になっています。ブラウザにストリーミングするには、以下の環境変数を追加します:
environment:
AUDIO: "Y"
次に、Webビューアーの設定 → 詳細でオーディオを有効にします。ストリームはこのオプションが有効な間のみアクティブになるため、それ以外では余分な帯域幅を使用しません。
デフォルトでは、コンテナはブリッジネットワーキングを使用し、ホストと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
networks:
vlan:
external: true
このアプローチの追加の利点は、すべてのポートがデフォルトで公開されるため、ポートマッピングを行う必要がなくなることです。
[!IMPORTANT]
macvlanの設計により、このIPアドレスはDockerホストからアクセスできません。macvlanはホストとコンテナ間の通信を許可しないためです。これが懸念される場合は、回避策として2番目のmacvlanを作成する必要があります。
コンテナをmacvlan用に設定した後、実際のPCのようにルーターにIPを要求してWindowsをホームネットワークの一部にすることが可能です。
このモード(コンテナとWindowsが別々のIPアドレスを持つ)を有効にするには、composeファイルに次の行を追加します:
environment:
DHCP: "Y"
devices:
- /dev/vhost-net
device_cgroup_rules:
- 'c *:* rwm'
追加のディスクを作成するには、composeファイルを次のように変更します:
environment:
DISK2_SIZE: "32G"
DISK3_SIZE: "64G"
volumes:
- ./example2:/storage2
- ./example3:/storage3
ディスクデバイスやパーティションを直接パススルーするには、次のようにcomposeファイルに追加します:
devices:
- /dev/sdb:/disk1
- /dev/sdc1:/disk2
メインドライブにしたい場合は/disk1を使用します(インストール中にフォーマットされます)。/disk2以降はセカンダリドライブとして追加され、そのまま保持されます。
USBデバイスをパススルーするには、まずlsusbコマンドでベンダーIDとプロダクトIDを調べ、次のようにcomposeファイルに追加します:
environment:
ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"
devices:
- /dev/bus/usb
[!WARNING]
Windowsセットアップが完了する前にUSBマスストレージデバイスを追加すると、セットアップが失敗する可能性があります。さらに悪いことに、ドライブがシステムディスクとしてフォーマットされ、すべてのデータが失われる可能性があります!そのため、初めてコンテナを起動するときは常にそれらを切断したままにしてください。
いいえ。サポートされているすべての設定の完全な概要については、環境変数のページを参照してください。
まず、プラットフォームとコンテナランタイムが上記の要件を満たしていることを確認してください。
Linuxホストで、cpu-checkerをインストールして実行します:
sudo apt install cpu-checker
sudo kvm-ok
正しく構成されている場合、次のように報告されます:
KVM acceleration can be used
KVMデバイスが存在することも確認できます:
ls -l /dev/kvm
KVMが利用できない場合は、以下を確認してください:
Intel VT-xまたはAMD-V)が有効になっているか。kvm-okが成功してもコンテナがKVMが利用できないと報告する場合は、権限やデバイスアクセスの問題を除外するために、一時的にComposeファイルにprivileged: trueを追加できます。
dockur/macosを使用できます。自動インストールを除き、同じ機能の多くを共有しています。
その場合はqemus/qemuを使用できます。
はい。このプロジェクトにはオープンソースコードのみが含まれており、Windows自体は配布していません。コード内にあるプロダクトキーは、すべてMicrosoftが試用目的で公開した汎用インストールキーであり、有効なアクティベーションライセンスではありません。
有効なWindowsライセンスを保有していること、および使用がMicrosoftのライセンス条件に準拠していることを確認する責任は利用者にあります。
このプロジェクトで参照される製品名、ロゴ、ブランド、その他の商標は、それぞれの商標権者の財産です。このプロジェクトはMicrosoft Corporationと提携、スポンサー、または推奨するものではありません。
| 値 | バージョン | サイズ |
|---|
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 |