基于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 启动配置。

相关推荐
Arc星语1 小时前
Docker Redis集群3主3从模式
redis·docker
Drscq2 小时前
How to migrate a CentOS 8 to Rocky Linux 8.10
linux·运维·centos
修心光2 小时前
CentOS配置iptables规则并使其永久生效
linux·运维·centos
加载中loading...2 小时前
Linux线程安全(二)条件变量实现线程同步
linux·运维·服务器·c语言·1024程序员节
安科瑞刘鸿鹏2 小时前
校园建筑用电安全监测装置 电气火灾监测预防设备功能介绍
运维·服务器·网络·嵌入式硬件·安全·能源
课堂随想2 小时前
【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so
运维·服务器·conda
工作不忙4 小时前
不使用docker-compose不使用zookeeper启动ApacheKafka3.8.0单机运行KRAFT模式
ubuntu·docker·zookeeper·kafka·apache
盒马盒马4 小时前
Docker:存储卷
docker·容器
大熊程序猿5 小时前
ubuntu 安装k3s
linux·运维·ubuntu
luoqice5 小时前
CentOS 自启动某个应用
linux·运维·服务器