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

相关推荐
齐齐大魔王31 分钟前
linux-僵死进程处理
linux·运维·服务器
.小小陈.4 小时前
Linux 线程概念与控制:从底层原理到实战应用
linux·运维·jvm
网络工程小王4 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
wangbing11254 小时前
各linux版本的包管理命令
linux·运维·服务器
Joseph Cooper4 小时前
Linux/Android 跟踪技术:ftrace、TRACE_EVENT、atrace、systrace 与 perfetto 入门
android·linux·运维
.柒宇.5 小时前
AI掘金头条项目-K8s部署实战教程
python·云原生·容器·kubernetes·fastapi
比昨天多敲两行5 小时前
Linux基础开发工具(下)
linux·运维·服务器
feng14566 小时前
OpenSREClaw - 故障复盘和变更评审双 Agent 案例
运维·人工智能
linux修理工6 小时前
chrome官方下载地址
运维·服务器
无忧智库7 小时前
IT运维正在经历一场真正的范式革命:从告警风暴到AIOps自主自愈的完整工程解构(WORD)
运维