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

推荐订阅源

Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
SecWiki News
SecWiki News
Forbes - Security
Forbes - Security
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
V
V2EX - 技术
S
Secure Thoughts
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
S
Securelist
S
Security Archives - TechRepublic
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
Recent Commits to openclaw:main
Recent Commits to openclaw:main
G
GRAHAM CLULEY
H
Hacker News: Front Page
Microsoft Azure Blog
Microsoft Azure Blog
I
Intezer
Google Online Security Blog
Google Online Security Blog
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Webroot Blog
Webroot Blog
Jina AI
Jina AI
Engineering at Meta
Engineering at Meta
P
Proofpoint News Feed
The Cloudflare Blog
I
InfoQ
L
LangChain Blog
U
Unit 42
P
Proofpoint News Feed
S
Schneier on Security
S
Security Affairs
Y
Y Combinator Blog
T
Tenable Blog
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
量子位
Google DeepMind News
Google DeepMind News
Cyberwarzone
Cyberwarzone
博客园 - 聂微东
D
Darknet – Hacking Tools, Hacker News & Cyber Security
GbyAI
GbyAI
AWS News Blog
AWS News Blog

二叉树的博客

通用docker容器镜像打包应用的流程 kubevirt初体验 魔改dockur制作可迁移的Windows镜像(单文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 基于docker的在线IDE制作(支持浏览器直接访问) k8s日常问题排障 jetbrains家的goland项目可用但老爆红 机房本地服务器自建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虚拟机)