惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
V
V2EX
P
Proofpoint News Feed
The Hacker News
The Hacker News
GbyAI
GbyAI
G
Google Developers Blog
S
Schneier on Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - Franky
Recent Announcements
Recent Announcements
腾讯CDC
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
Kaspersky official blog
U
Unit 42
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
O
OpenAI News
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Y
Y Combinator Blog
博客园 - 【当耐特】
Vercel News
Vercel News
Hacker News: Ask HN
Hacker News: Ask HN
T
Tor Project blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
S
Security Affairs
A
About on SuperTechFans
Project Zero
Project Zero
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 聂微东
Webroot Blog
Webroot Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cloudbric
Cloudbric
T
Tenable Blog
月光博客
月光博客
C
Check Point Blog
宝玉的分享
宝玉的分享
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
NISL@THU
NISL@THU

二叉树的博客

Ray 支持昇腾 NPU 的 KubeRay 对接记录 openEuler 22.03 arm64 离线包适配记录 在线 IDE 的通用容器镜像打包流程 麒麟 V10 安装时配置本地源 BKE 与 BMP 部署排障流程 containerd 允许 HTTP 镜像仓库拉取 Red Hat 8 amd64 离线依赖适配记录 通用docker容器镜像打包应用的流程 kubevirt初体验 kubevirt初体验 魔改dockur制作可迁移的Windows镜像(单文件) 魔改dockur制作可迁移的Windows镜像(单文件) 通过dockur制作可迁移的Windows镜像(双文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 通过ProxmoxVE制作kubevirt可用的Windows镜像 基于docker的在线IDE制作(支持浏览器直接访问) 基于docker的在线IDE制作(支持浏览器直接访问) k8s日常问题排障 k8s日常问题排障 jetbrains家的goland项目可用但老爆红 jetbrains家的goland项目可用但老爆红 机房本地服务器自建Gitea并使用 机房本地服务器自建Gitea并使用 nvidia-smi被自动升级无法与GPU通信了怎么办 conda使用GPU时的一些陷阱 给机房的LXD容器配置跳板机进行连接 在Pycharm上连接远程虚拟环境进行使用 给机房的Ubuntu22.04安装LXD共享GPU资源 给机房的Ubuntu22.04的Linux进行内穿映射端口
通过dockur制作可迁移的Windows镜像(双文件)
二叉树上的我 · 2025-03-15 · via 二叉树的博客

使用dockur的原始镜像制作Windows镜像(双文件)

https://github.com/dockur/windows

原始仓库的镜像默认只是一个ISO下载器和网络自动设置器,本质上不包含Windows镜像,容器启动后镜像默认会将系统安装到挂载出的盘中。

本页说明最终将保存两个文件,一个是挂载盘的压缩文件,一个是容器导出的tar包。

仓库说明写的Windows镜像大小是ISO的大小,不是实际安装后整个镜像的大小,实际镜像大小大约是说明的三倍。

1. 拉取镜像

1
docker pull dockurr/windows

2. 设置需要的基础镜像

通过官方源下载安装(非常缓慢)

开设镜像:

1
docker run -it -d -e RAM_SIZE="8G" -e CPU_CORES="4" --name win11 -p 8007:8006 --env VERSION="${WINV}" --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v /data/windows:/storage --stop-timeout 120 dockurr/windows

整个开设过程非常缓慢。

使用自定义的ISO镜像安装(速度很快)

下载镜像大概10分钟:

1
wget https://down.idc.wiki/ISOS/Windows/Server%202022/zh-cn_windows_server_2022_x64_dvd_6c73507d.iso && chmod 777 zh-cn_windows_server_2022_x64_dvd_6c73507d.iso

开设镜像:

1
docker run -it -d -e RAM_SIZE="8G" -e CPU_CORES="4" --name win2022 -p 8007:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v /data/windows:/storage -v ./zh-cn_windows_server_2022_x64_dvd_6c73507d.iso:/boot.iso --stop-timeout 120 dockurr/windows

整个开设过程大约需要90分钟。

3. 导出镜像及使用

提交镜像:

1
docker commit windows11 spiritlhl/wds:11

导出docker镜像:

1
docker save -o wds_11.tar spiritlhl/wds:11

这里挂载出来的/data/windows需要被压缩保存。pigz需要提前下载,使用-9压缩率最大,压缩过程大约需要10多分钟:

1
tar -cvf - /data/windows | pigz -9 > archive.tar.gz

4. 迁移与恢复

如果迁移后开设新的容器,迁移时需要同时带上docker层面导出的tar包和这个文件夹的压缩文件,放到新文件夹中,开设时使用相同方式进行挂载。

加载环境并解压到当前目录,解压过程大约需要10多分钟:

1
pigz -d -c archive.tar.gz | tar -xvf -

解压后会在当前目录下,若需要更改路径,可使用mv命令修改实际路径。

加载镜像并再次开设(假设环境压缩包解压后仍为原路径,如果非原路径,则将/data/windows替换为实际路径):

1
docker load -i wds_11.tar && docker run -it -d --name windows -p 8007:8006 --env VERSION="${WINV}" --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v /data/windows:/storage --stop-timeout 120 spiritlhl/wds:11

这样就能实现网络重新设置和环境加载,加载过程在10分钟以内。

5. 安装过程中自动执行的第三方脚本

通过挂载一个带install.bat文件的文件夹到容器的/oem路径上,容器安装Windows的过程中将自动执行本文件。

缺点

这样打包需要存储两个文件,一个文件16G一个文件500多MB,每次导入的时候都得加载两个文件不是很方便,未来整个魔改的方法只保存一个文件。

在浏览器端的VNC无法使用复制粘贴功能,这块没有解决的方法,系QEMU本身不支持的问题(仅限Windows虚拟机)