基于docker运行windows系统

作为一个开发人员,日常生活基本是在mac和ubuntu系统上操作,但是时不时会有 Windows 使用的场景,不论是运行某个指定的软件,还是要做一些跨平台软件的功能验证。下面就基于docker完成windows虚拟化使用,参考链接:

复制代码
github源码链接:https://github.com/dockur/windows
文档链接:https://soulteary.com/2024/03/11/install-windows-into-a-docker-container.html

本方案是基于linux环境下,采用了 KVM 加速完成,首先准备一个linux系统,然后检查是否支持kvm加速

复制代码
##安装工具
sudo apt install cpu-checker -y

##检查
sudo kvm-ok
##正常输出结果
INFO: /dev/kvm exists
KVM acceleration can be used

下面基本操作如下:

(1)安装

获取在 Docker 中运行 Windows 的容器镜像很简单:

复制代码
docker pull dockurr/windows

当然,如果不能够直接下载,也可以选择本地构建:

复制代码
git clone https://github.com/dockur/windows.git
cd windows
docker build -t dockurr/windows .

(2)使用

readme中提供了几种方式来启动,

  • Via Docker Compose:

    services:
    windows:
    image: dockurr/windows
    container_name: windows
    environment:
    VERSION: "win11"
    devices:
    - /dev/kvm
    cap_add:
    - NET_ADMIN
    ports:
    - 8006:8006
    - 3389:3389/tcp
    - 3389:3389/udp
    stop_grace_period: 2m

  • Via Docker CLI:

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

  • Via Kubernetes:

    kubectl apply -f kubernetes.yml

下面以docker-compose为例进行说明,其中

  • 系统配置:environment可以指定安装windows版本信息

支持使用的值包含:win11win10ltsc10win81win7vistawinxp20222019201620122008

  • 资源配置:

这个 Windows 容器会使用 vCPU x2、4GB 内存、64G 的磁盘空间,来满足 Win11 的最低安装需求。我们可以根据自己的实际需求,来动态的调整容器的硬件资源限制。

复制代码
environment:
  RAM_SIZE: "8G"
  CPU_CORES: "4"
  DISK_SIZE: "256G"
  • 增加外设

如果你需要挂载外设硬盘或者usb等,可以按如下方式添加

复制代码
environment:
  DEVICE: "/dev/sda"
  DEVICE2: "/dev/sdb"
devices:
  - /dev/sda
  - /dev/sdb
  • 加速持久化

由于系统镜像一版比较大,每次启动docker如果都进行下载的话,碰上网络情况不佳的时候就会很耗时,这时候可以先离线下载好系统镜像,然后将文件重命名为 win11x64.iso,接着将文件放置在目录的 ./iso 子目录中。借助 Nginx,可以让整个安装部署过程变的飞快。最后修改yaml文件,启动时自动加载对应的镜像文件即可。

复制代码
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
    environment:
      VERSION: "http://winiso/win11x64.iso"
      MANUAL: "N"
    volumes:
      - ./win:/storage
    depends_on:
      - winiso


  winiso:
    image: nginx:alpine
    container_name: winiso
    restart: on-failure
    volumes:
     - ./iso:/usr/share/nginx/html

在上面的配置中,增加了一个用来将本地的 Windows 安装文件转换为 dockurr/windows 快速可安装的在线地址的容器。将配置文件保存为 docker-compose.yml,然后使用 docker compose up 或者 docker compose up -d 启动配置。

相关推荐
阿拉斯攀登1 小时前
Kubernetes(K8s)全面解析:核心概念、架构与实践
docker·云原生·容器·kubernetes·k8s
杭州泽沃电子科技有限公司2 小时前
煤化工精炼与加工环节的监测:智能平台如何保障最终产品价值与环保合规?
运维·科技
Radan小哥2 小时前
Docker学习笔记—day011
笔记·学习·docker
可可苏饼干3 小时前
Ruo-Yi 前后端分离
运维·学习
SUPER52663 小时前
运维hbase服务重启,导致应用查询异常 hbase:meta
运维·数据库·hbase
_w_z_j_3 小时前
Linux----信号(产生、保存、处理)
linux·运维·服务器
专家大圣3 小时前
远程调式不复杂!内网服务器调试用对工具很简单
运维·服务器·网络·内网穿透·cpolar
gs801403 小时前
Ascend 服务器是什么?(Ascend Server / 昇腾服务器)
运维·服务器·人工智能
Zhijun.li@Studio3 小时前
【Docker实战】在容器内配置 SSH 服务:安装、Vim配置与连接验证(保姆级教程)
docker·ssh·vim
了一梨4 小时前
使用Docker配置适配泰山派的交叉编译环境
linux·docker