Docker容器中运行Windows!

admin 2024年3月13日10:42:16评论15 views字数 6465阅读21分33秒阅读模式
Docker容器中运行Windows!

GitHub - dockur/windows: Windows in a Docker container.[1]

原文地址:https://hackerchi.top/article/36d9d3aa-d1b4-4698-b272-54a31347a296.html

展示

各位观众姥爷,献上结果

Docker容器中运行Windows!
浏览器即可访问,功能齐全,网络畅通,自带共享文件夹
Docker容器中运行Windows!
宿主机为kali Linux
Docker容器中运行Windows!
我是精简LSTC版本,资源占用很少

特征

  • 内置windows发行版ISO下载器
  • 自动激活
  • KVM加速
  • 基于网页的查看界面

用法

一、安装Docker和Docker Compose

在不同的操作系统上安装Docker和Docker Compose的步骤有所不同。以下是在Linux、Windows和macOS上安装Docker和Docker Compose的基本指南。

Kali Linux安装Docker和Docker Compose

sudo apt-get update
sudo apt install docker docker-compose

#验证 成功则返回配置信息
sudo docker info

其他Linux发行版安装Docker

    1. 更新软件包索引:
sudo apt-get update

    1. 安装Docker的必要包:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    1. 添加Docker的官方GPG密钥:
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -
    1. 设置稳定版仓库:
sudo add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable"
    1. 再次更新软件包索引:
sudo apt-get update
    1. 安装Docker CE:
sudo apt-get install docker-ce

安装Docker Compose

    1. 下载Docker Compose的当前稳定版本:
sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    1. 为二进制文件添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose

Windows

对于Windows,推荐使用Docker Desktop。

  1. 访问Docker Desktop的官方下载页面:Docker Desktop for Windows[2]
  2. 下载安装程序并运行。
  3. 安装过程中,选择是否启用Windows容器,根据需要选择即可。
  4. 完成安装后,重启计算机。

Docker Desktop包括Docker Compose,因此不需要单独安装Docker Compose。

macOS

对于macOS,也推荐使用Docker Desktop。

  1. 访问Docker Desktop的官方下载页面:Docker Desktop for Mac[3]
  2. 下载安装程序并运行。
  3. 拖动Docker到应用程序文件夹。
  4. 启动Docker Desktop。

Docker Desktop包括Docker Compose,因此不需要单独安装Docker Compose。

请注意,安装步骤可能会随着软件版本的更新而变化。建议访问Docker和Docker Compose的官方文档获取最新的安装指南。

二、运行

通过docker-compose运行

编辑docker-compose.yml文件

vi docker-compose.yml

version: "3"services:
  windows:
    image: dockurr/windows
    container_name: windows
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    stop_grace_period: 2m
    restart: on-failure

进入dockerdocker-compose.yml 所在目录后启动docker-compose

执行以下命令来启动镜像:

docker-compose up -d

这将启动在 docker-compose.yml 文件中定义的所有服务。-d 参数将使 Docker 在后台运行并打印容器ID。

Docker容器中运行Windows!
我的执行流程,提前已经编辑好docker-compose.yml文件,注意名称docker-compose.yml不能变

通过docker运行

docker run

docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows

常用问题

    • 我该如何使用它?

很简单的!这些是步骤:

      • 启动容器并使用 Web 浏览器连接到端口 8006 。[4]
      • 等待奇迹发生,整个安装过程将全自动进行。
      • 看到桌面后,您的 Windows 安装就可以使用了。
    • 如何选择 Windows 版本?

默认情况下,将安装 Windows 11。但是您可以将VERSION环境变量添加到您的撰写文件中,以便指定要下载的替代 Windows 版本:

environment:
  VERSION: "win11"

从以下值中选择:

Value Description Source Transfer Size
win11 Windows 11 Pro Microsoft Fast 6.4 GB
win10 Windows 10 Pro Microsoft Fast 5.8 GB
ltsc10 Windows 10 LTSC Microsoft Fast 4.6 GB
win81 Windows 8.1 Pro Microsoft Fast 4.2 GB
win7 Windows 7 SP1 Bob Pony Medium 3.0 GB
vista Windows Vista SP2 Bob Pony Medium 3.6 GB
winxp Windows XP SP3 Bob Pony Medium 0.6 GB
2022 Windows Server 2022 Microsoft Fast 4.7 GB
2019 Windows Server 2019 Microsoft Fast 5.3 GB
2016 Windows Server 2016 Microsoft Fast 6.5 GB
2012 Windows Server 2012 R2 Microsoft Fast 4.3 GB
2008 Windows Server 2008 R2 Microsoft Fast 3.0 GB
core11 Tiny 11 Core Archive.org Slow 2.1 GB
tiny11 Tiny 11 Archive.org Slow 3.8 GB
tiny10 Tiny 10 Archive.org Slow 3.6 GB

要安装 ARM64 版本的 Windows,请使用dokur/windows-arm[5]

    • 如何使用 RDP 进行连接?

网页查看器主要是在安装过程中使用,因为它的图像质量较低,并且没有音频或剪贴板等。

因此,为了获得更好的体验,您可以使用任何 Microsoft 远程桌面客户端连接到容器的 IP,使用用户名docker并将密码留空。

GooglePlay 商店提供了一个很好的适用于Android的 RDP 客户端。[6]Apple Store 中有一款适用于iOS的产品。[7]对于 Linux,您可以使用rdesktop[8];对于 Windows,您不需要安装任何东西,因为它已经作为操作系统的一部分提供。

    • 如何增加 CPU 或 RAM 的数量?

默认情况下,为容器分配 2 个 CPU 核心和 4 GB RAM,因为这是 Windows 11 的最低要求。

要增加此值,请添加以下环境变量:

environment:
  RAM_SIZE: "8G"CPU_CORES: "4"
    • 如何更改磁盘大小?

要扩展 64 GB 的默认大小,请将设置添加DISK_SIZE到您的撰写文件并将其设置为您的首选容量:

environment:
  DISK_SIZE: "256G"

这也可用于将现有磁盘调整为更大的容量,而不会丢失任何数据。

    • 如何更改存储位置?

要更改存储位置,请在您的撰写文件中包含以下绑定安装:

volumes:
  - /var/win:/storage

将示例路径替换/var/win为所需的存储文件夹。

    • 如何与主机共享文件?

打开文件资源管理器并单击网络部分,您将看到一台名为 的计算机host.lan,双击它,它将显示一个名为 的文件夹Data。

在此文件夹中,您可以访问放置/storage/shared在主机上(见上文)的任何文件。

    • 如何安装自定义镜像?

为了下载自定义 ISO 映像,请使用VERSION环境变量中指定的 ISO 的 URL 启动一个干净的容器:

environment:
  VERSION: "https://example.com/win.iso"

或者,您也可以将本地文件重命名为custom.iso并将其放入空/storage文件夹中以跳过下载。

    • 如何执行手动安装?

最好使用自动安装,因为它优化了与此容器一起使用的各种设置。

但是,如果您坚持手动执行安装,请使用以下环境变量启动一个干净的容器:

environment:
  MANUAL: "Y"
💡

然后按照下列步骤操作:(这一步是坑!一定要注意,安装过程会弹出找不到驱动的提示框,按照如下操作即可,名称可参考,不一定完全一样!)

      • 启动容器并在 Web 浏览器中连接到容器的端口 8006 。[9]下载完成后,您将看到 Windows 安装屏幕。
      • 单击开始安装Install now。在下一个屏幕上,出现提示时按“确定” ,然后从列表中Load driver选择与您的 Windows 版本匹配的驱动程序。VirtIO SCSI因此,对于 Windows 11,选择D:amd64w11vioscsi.inf并单击“下一步”。
      • 接受许可协议并选择您喜欢的 Windows 版本,例如家庭版或专业版。
      • 选择Custom: Install Windows only (advanced),然后单击Load driver下一个屏幕。选择“浏览”并导航到该D:NetKVMw11amd64文件夹,然后单击“确定”。从列表中选择VirtIO Ethernet Adapter并单击“下一步”。
      • 选择Drive 0并单击“下一步”。
      • 等待 Windows 完成文件复制并完成安装。
      • 看到桌面后,打开文件资源管理器并导航到 CD-ROM 驱动器 (E:)。双击virtio-win-gt-x64.msi并继续安装 VirtIO 驱动程序。
    • 如何为容器分配单独的 IP 地址?

默认情况下,容器使用桥接网络,与主机共享 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

请务必修改这些值以匹配您的本地子网。

创建网络后,将您的撰写文件更改为如下所示:

services:
  windows:
    container_name: windows
    ..<snip>..
    networks:
      vlan:
        ipv4_address: 192.168.0.100

networks:
  vlan:
    external: true

这种方法的另一个好处是您不必再执行任何端口映射,因为默认情况下所有端口都会公开。

请注意,由于 macvlan 的设计,Docker 主机无法访问此 IP 地址,这不允许两者之间进行通信。如果这是一个问题,您需要创建第二个 macvlan[10]作为解决方法。

    • Windows 如何从我的路由器获取 IP 地址?

配置 macvlan 容器后(见上文),Windows 可以通过向路由器请求 IP 来成为家庭网络的一部分,就像真正的 PC 一样。

要启用此模式,请将以下行添加到您的撰写文件中:

environment:
  DHCP: "Y"devices:
  - /dev/vhost-net
device_cgroup_rules:
  - 'c *:* rwm'

请注意,在此模式下,容器和 Windows 将各自拥有自己独立的 IP。容器将保留 macvlan IP,Windows 将使用 DHCP IP。

    • 如何传递磁盘?

通过将磁盘设备添加到您的撰写文件中,可以直接传递磁盘设备:

environment:
  DEVICE: "/dev/sda"DEVICE2: "/dev/sdb"devices:
  - /dev/sda
  - /dev/sdb

DEVICE如果您希望它成为您的主驱动器,请使用它,并使用DEVICE2和更高版本将它们添加为辅助驱动器。

    • 如何传递 USB 设备?

要传递 USB 设备,首先通过lsusb命令查找其供应商和产品 ID,然后将它们添加到您的 compose 文件中,如下所示:

environment:
  ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"devices:
  - /dev/bus/usb
    • 如何验证我的系统是否支持 KVM?

要验证您的系统是否支持 KVM,请运行以下命令:

sudo apt install cpu-checker
sudo kvm-ok

如果您收到一条错误消息,kvm-ok指示无法使用 KVM 加速,请检查 BIOS 中的虚拟化设置。

    • 这个项目合法吗?

是的,该项目仅包含开源代码,不分发任何受版权保护的材料。代码中找到的任何产品密钥都只是 Microsoft 出于试用目的提供的通用占位符。因此,根据所有适用的法律,该项目将被视为合法。

免责声明

本项目中提及的产品名称、徽标、品牌和其他商标均为其各自商标所有者的财产。此项目不隶属于 Microsoft Corporation,也不受 Microsoft Corporation 赞助或认可。

欢迎访问我们的网站和关注我们的公众号,获取最新的技术共享内容、创新想法和安全知识。

 

参考资料

[1]GitHub - dockur/windows: Windows in a Docker container.: https://github.com/dockur/windows
[2]Docker Desktop for Windows: https://www.docker.com/products/docker-desktop
[3]Docker Desktop for Mac: https://www.docker.com/products/docker-desktop
[4]端口 8006 。: http://localhost:8006/
[5]dokur/windows-arm: https://github.com/dockur/windows-arm/
[6]Android的 RDP 客户端。: https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx
[7]iOS的产品。: https://apps.apple.com/nl/app/microsoft-remote-desktop/id714464092?l=en-GB
[8]rdesktop: http://www.rdesktop.org/
[9]端口 8006 。: http://localhost:8006/
[10]第二个 macvlan: https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access

 

原文始发于微信公众号(黑客驰):Docker容器中运行Windows!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月13日10:42:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Docker容器中运行Windows!http://cn-sec.com/archives/2572316.html

发表评论

匿名网友 填写信息