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

文章目录

  • 前言
  • [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 容器?

  1. 启动容器并连接到 8006 端口。
  2. 使用浏览器连接到该端口。
  3. 安装过程会自动完成,直到你看到 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 过程中遇到的一些问题,解释其中的原理和原因。

相关推荐
程序员霸哥哥19 小时前
snipaste免费版下载安装使用教程(附安装包)
windows·microsoft·snipaste
九皇叔叔20 小时前
从零了解 Dockerfile:构建属于你的 Docker 镜像
运维·docker·容器
程序员霸哥哥20 小时前
Keil5下载教程及安装教程(附安装包)
windows·keil5·keil5下载教程·keil5安装教程
susu108301891121 小时前
windows系统下docker desktop创建容器指定ip
运维·docker·容器
AI大模型学徒21 小时前
Chatbox 安装 for Windows
windows·语言模型·chatgpt
水冗水孚21 小时前
50多张图详细记录——使用Jenkins完成前端项目CICD自动化部署教程(不踩坑!)
前端·docker·jenkins
千里马学框架1 天前
windows系统上aosp15上winscope离线html如何使用?
android·windows·html·framework·安卓窗口系统·winscope
2501_938963961 天前
Flutter 3.19 桌面应用开发:适配 Windows/macOS 端窗口大小与菜单栏自定义
windows·flutter·macos
G31135422731 天前
云服务器系统 选择Windows和Linux的理由
linux·服务器·windows
龙须草AI笔记1 天前
N8N系列:新手课程,本地 N8N 不安全?Windows 下 HTTPS 配置指南,新手也能看懂
windows·安全·https·入门教程·ai技术·ai工具·n8n