当前位置: 首页 > article >正文

详解 Docker 启动 Windows 容器第一篇:多种方式及实用配置指南

文章目录

  • 前言
  • 1. 使用 Docker Compose 启动
  • 2. 使用 Docker CLI 启动
  • 3. 使用 Kubernetes 启动
  • 4. 兼容性说明
  • 5. 常见问题解答
  • 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 容器。以下是配置示例:

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 命令:

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 容器部署到集群中:

kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml

4. 兼容性说明

不同平台对 Docker 的支持情况不同,以下是关于不同平台兼容性的总结:

产品平台兼容性
Docker EngineLinux
Docker DesktopLinux
Docker DesktopmacOS
Docker DesktopWindows 11
Docker DesktopWindows 10

5. 常见问题解答

如何使用 Windows 容器?

  1. 启动容器并连接到 8006 端口。
  2. 使用浏览器连接到该端口。
  3. 安装过程会自动完成,直到你看到 Windows 桌面。

如何选择 Windows 版本?

默认情况下,安装的是 Windows 11 Pro。如果你需要选择其他版本,可以通过 VERSION 环境变量来指定。例如:

environment:
  VERSION: "11"

如何更改存储位置?

可以通过在 Docker Compose 配置中使用 volumes 绑定来更改存储路径。例如:

volumes:
  - /var/win:/storage

如何更改磁盘大小?

默认情况下,磁盘大小为 64 GB。如果你想增加磁盘容量,可以在配置文件中添加 DISK_SIZE 环境变量。例如:

environment:
  DISK_SIZE: "256G"

如何共享文件?

你可以通过将本地文件夹挂载到容器内来实现文件共享。例如:

volumes:
  - /home/user/example:/data

容器内的 /data 目录将映射到宿主机的 /home/user/example 目录。

如何在安装后运行脚本?

你可以在容器安装完成后运行自定义脚本。首先创建一个 install.bat 文件,并将其放入一个文件夹中,然后通过 volumes 绑定该文件夹。例如:

volumes:
  - /home/user/example:/oem

容器会在安装完成后执行 install.bat 脚本。

如何设置用户名和密码?

默认情况下,安装时会创建一个用户名为 Docker 的账户,密码为空。如果你需要修改用户名和密码,可以在配置文件中设置:

environment:
  USERNAME: "bill"
  PASSWORD: "gates"

如何选择 Windows 的语言和键盘布局?

你可以通过设置 LANGUAGE 和 KEYBOARD 环境变量来选择不同的语言和键盘布局。例如:

environment:
  LANGUAGE: "French"
  KEYBOARD: "fr-FR"

6. 高级配置

如何配置独立的 IP 地址?

默认情况下,容器使用桥接网络共享宿主机的 IP 地址。如果你希望为容器分配一个独立的 IP 地址,可以创建一个 macvlan 网络。例如:

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 文件中配置:

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 过程中遇到的一些问题,解释其中的原理和原因。


http://www.kler.cn/a/487771.html

相关文章:

  • [IoT]详细设计:智能农业监控系统
  • LabVIEW轴承性能测试系统
  • 【HTML+CSS+JS+VUE】web前端教程-27-弹性盒模型(flex box)
  • uniapp小程序中隐藏顶部导航栏和指定某页面去掉顶部导航栏小程序
  • 江科大STM32入门——输入捕获笔记总结
  • Makefile文件/其他文件中出现的“变量/符合”,如何查看定义?
  • verilogHDL仿真详解
  • JavaFx 21 项目Markdown 预览、编辑、新建、文件树、删除、重命名
  • huggingface上下载数据
  • Python自学 - 类进阶(可调用对象)
  • 《上古重生》V20241127111039官方中文学习版
  • 将光源视角的深度贴图应用于摄像机视角的渲染
  • 系统架构设计师考点—计算机网络
  • 命令模式详解与应用
  • TensorFlow Quantum快速编程(基本篇)
  • CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布
  • 【计算机网络】什么是网关(Gateway)?
  • 国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩
  • 安捷伦等程控电源压测工具支持所有NationalInstruments.Visa协议的电源。
  • 初学stm32 --- ADC单通道采集