文章目录
- 前言
- [1. 使用 Docker Compose 启动](#1. 使用 Docker Compose 启动)
- [2. 使用 Docker CLI 启动](#2. 使用 Docker CLI 启动)
- [3. 使用 Kubernetes 启动](#3. 使用 Kubernetes 启动)
- [4. 兼容性说明](#4. 兼容性说明)
- [5. 常见问题解答](#5. 常见问题解答)
- [6. 高级配置](#6. 高级配置)
- 总结
前言
在容器化技术中,Docker 允许我们在不同的平台上轻松运行各种操作系统,包括 Windows。本文将介绍如何通过 Docker Compose、Docker CLI 和 Kubernetes 来启动 Windows 系统容器(dockurr/windows),并提供详细的操作步骤及其配置方法。
windows 容器 dockerhub 地址(含使用):dockurr/windows
原理以及实现
dockurr/windows
是一个 Docker 镜像,通常用于运行 Windows
容器。这个镜像的主要目标是让你能够在 Linux 系统上模拟和运行 Windows 容器,尤其是在 Docker 环境下。它实现了一个类似于虚拟化的技术,可以通过 KVM(Kernel-based Virtual Machine)来支持 Windows 容器的运行。
1. 使用 Docker Compose 启动
Docker Compose 是管理多容器 Docker 应用的工具。你可以通过它快速启动并配置 Windows 容器。以下是配置示例:
yaml
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "11"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period: 2m
说明:
- VERSION: "11":指定 Windows 版本,默认是 Windows 11 Pro。如果你需要其他版本,可以修改该值(详细版本选择见下文)。
- devices:指定容器需要使用的设备,如 KVM(硬件虚拟化)和网络设备。
- cap_add: NET_ADMIN:为容器添加网络管理员权限,允许容器进行网络配置。
- ports:映射容器端口到宿主机端口,3389端口用于远程桌面连接(RDP)。
- stop_grace_period:设置容器停止时的宽限期。
2. 使用 Docker CLI 启动
如果你更喜欢通过命令行启动容器,可以使用以下 Docker 命令:
bash
docker run -it --rm -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
说明:
-it
:以交互模式运行容器。--rm
:容器停止后自动删除。-p 8006:8006
:映射容器端口 8006 到宿主机端口 8006。--device
:挂载 KVM 和网络设备。--cap-add NET_ADMIN
:为容器添加网络管理员权限。--stop-timeout 120
:设置容器停止时的超时时间。
3. 使用 Kubernetes 启动
如果你在 Kubernetes 集群中管理容器,可以通过以下命令将 Windows 容器部署到集群中:
bash
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
4. 兼容性说明
不同平台对 Docker 的支持情况不同,以下是关于不同平台兼容性的总结:
产品 | 平台 | 兼容性 |
---|---|---|
Docker Engine | Linux | ✅ |
Docker Desktop | Linux | ❌ |
Docker Desktop | macOS | ❌ |
Docker Desktop | Windows 11 | ✅ |
Docker Desktop | Windows 10 | ❌ |
5. 常见问题解答
如何使用 Windows 容器?
- 启动容器并连接到 8006 端口。
- 使用浏览器连接到该端口。
- 安装过程会自动完成,直到你看到 Windows 桌面。
如何选择 Windows 版本?
默认情况下,安装的是 Windows 11 Pro。如果你需要选择其他版本,可以通过 VERSION
环境变量来指定。例如:
yaml
environment:
VERSION: "11"
如何更改存储位置?
可以通过在 Docker Compose 配置中使用 volumes 绑定来更改存储路径。例如:
yaml
volumes:
- /var/win:/storage
如何更改磁盘大小?
默认情况下,磁盘大小为 64 GB。如果你想增加磁盘容量,可以在配置文件中添加 DISK_SIZE 环境变量。例如:
yaml
environment:
DISK_SIZE: "256G"
如何共享文件?
你可以通过将本地文件夹挂载到容器内来实现文件共享。例如:
yaml
volumes:
- /home/user/example:/data
容器内的 /data 目录将映射到宿主机的 /home/user/example 目录。
如何在安装后运行脚本?
你可以在容器安装完成后运行自定义脚本。首先创建一个 install.bat 文件,并将其放入一个文件夹中,然后通过 volumes 绑定该文件夹。例如:
yaml
volumes:
- /home/user/example:/oem
容器会在安装完成后执行 install.bat 脚本。
如何设置用户名和密码?
默认情况下,安装时会创建一个用户名为 Docker 的账户,密码为空。如果你需要修改用户名和密码,可以在配置文件中设置:
yaml
environment:
USERNAME: "bill"
PASSWORD: "gates"
如何选择 Windows 的语言和键盘布局?
你可以通过设置 LANGUAGE 和 KEYBOARD 环境变量来选择不同的语言和键盘布局。例如:
yaml
environment:
LANGUAGE: "French"
KEYBOARD: "fr-FR"
6. 高级配置
如何配置独立的 IP 地址?
默认情况下,容器使用桥接网络共享宿主机的 IP 地址。如果你希望为容器分配一个独立的 IP 地址,可以创建一个 macvlan 网络。例如:
bash
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vlan
然后在 docker-compose.yml 文件中配置:
yaml
services:
windows:
container_name: windows
networks:
vlan:
ipv4_address: 192.168.0.100
networks:
vlan:
external: true
如何通过 RDP 连接到 Windows 容器?
你可以使用 Microsoft RDP 客户端(Windows 下使用 mstsc,Linux 可以使用 FreeRDP)连接到容器的 IP 地址,用户名为 Docker,密码为空。
总结
本文深入介绍了如何在 Docker 环境中启动 Windows 容器(dockurr/windows),提供了多种实现方式,包括通过 Docker Compose、Docker CLI 和 Kubernetes 启动容器的方法。同时,文章详述了各配置参数的意义和操作细节,覆盖了版本选择、磁盘大小调整、文件共享、自定义脚本运行、语言和键盘布局设置等常见需求。
此外,本文还探讨了容器的网络配置,包括如何为容器分配独立的 IP 地址以及通过 RDP 连接到 Windows 容器的具体方法。最后,总结了不同平台对 Windows 容器的兼容性,帮助读者快速排除可能遇到的问题。
对于想深入了解技术原理和潜在问题的读者,可以关注系列文章的下一篇,进一步探讨在本人部署 dockurr/windows
过程中遇到的一些问题,解释其中的原理和原因。