飞牛Nas运行Windows容器

容器使用链接:dockur/windows

网络部分链接:使用 Docker macvlan 网络

目标

在飞牛nas docker中运行windows,将windows加入本地网络,有一个本地网络的地址,并且能够连通nas主机

1. 修改路由器DHCP 地址分配

因为要分一些ip地址给windows容器,所以在路由器上留一些ip,我这里路由器只分配 192.168.2.2-192.168.2.191

2. 创建docker网络

创建一个macvlan网络

docker network create -d macvlan -o parent=enx803f5d0651b4 \
  --subnet 192.168.2.0/24 \
  --gateway 192.168.2.1 \
  --ip-range 192.168.2.192/28 \
  --aux-address 'host=192.168.2.201' \
  mynet

这里设置位docker保留地址 192.168.2.201

创建另一个macvlan网络

重启之后依旧有效,使用 NetworkManager 操作

sudo nmcli connection add type macvlan ifname mynet-shim con-name mynet-shim \
    dev enx803f5d0651b4 mode bridge ip4 192.168.2.201/32
sudo nmcli connection modify mynet-shim +ipv4.routes "192.168.2.192/28"
sudo nmcli connection up mynet-shim

临时使用,重启丢失

这个用于与windows主机通信

ip link add mynet-shim link enx803f5d0651b4 type macvlan  mode bridge

现在我们需要使用我们保留的地址配置接口 并提出来

ip addr add 192.168.2.201/32 dev mynet-shim
ip link set mynet-shim up

我们需要做的最后一件事是告诉我们的主机使用该接口与容器通信,因为我们已将容器限制为特定的CIDR本地网络子集,

我们只需向该范围添加一个路由,如下所示

ip route add 192.168.2.192/28 dev mynet-shim

3. 运行docker

docker-compose文件如下,镜像最好是提前下载好,

storage2 是第二块磁盘,windows 启动后在磁盘管理中格式化

/vol2/1000/share_mount:/data 是将飞牛这个路径挂载到 windows 的网络位置,后续可以映射网络驱动器

services:
  windows:
    image: dockurr/windows
    container_name: windows10-ltsc
    environment:
      VERSION: "10l"
      LANGUAGE: "Chinese"
      DISK_SIZE: "80G"
      DISK2_SIZE: "100G"
      RAM_SIZE: "4G"
      CPU_CORES: "8"
      USERNAME: "admin"
      PASSWORD: "xxxxxxxxxx"
      REGION: "en-US"
      KEYBOARD: "en-US"
      DHCP: "Y"
    devices:
      - /dev/kvm
      - /dev/net/tun
      - /dev/vhost-net
    device_cgroup_rules:
      - 'c *:* rwm'
    cap_add:
      - NET_ADMIN
    ports:
      - 10000:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    volumes:
      - /vol2/1000/Docker/Windows10-lts/data
      - /vol2/1000/Docker/Windows10-lts/data2:/storage2
      - /vol1/1000/镜像/19044.1288.211006-0501.21h2_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_zh-cn.iso:/boot.iso
      - /vol2/1000/share_mount:/data
    restart: always
    stop_grace_period: 2m
    networks:
      mynet:

networks:
  mynet:
    external: true

这时候容器ip是dhcp分配的

4. 连接windows

查看容器日志,等到windows安装成功之后,通过路由器查看到windows地址,再通过远程桌面连接进入系统,再把windows改为固定ip

5. windows kms激活

kms docker-compose 文件

services:
  kms:
    image: teddysun/kms
    container_name: kms
    restart: always
    ports:
      - "1688:1688"

默认情况下,企业评估版本无法KMS激活。需安装相应SKU才可以,需要下载skus文件到指定目录

下载Windows_10_ltsc_2021_skus解压并把子目录复制到 C:\Windows\System32\spp\tokens\skus

最后使用管理员权限执行激活命令,192.168.2.2 是我局域网中的 kms 服务器,如果使用飞牛 docker 运行 kms,这里是飞牛主机地址

cscript.exe %windir%\system32\slmgr.vbs /rilc
cscript.exe %windir%\system32\slmgr.vbs /upk >nul 2>&1
cscript.exe %windir%\system32\slmgr.vbs /ckms >nul 2>&1
cscript.exe %windir%\system32\slmgr.vbs /cpky >nul 2>&1
cscript.exe %windir%\system32\slmgr.vbs /ipk M7XTQ-FN8P6-TTKYV-9D4CC-J462D
cscript.exe %windir%\system32\slmgr.vbs /skms 192.168.2.2:1688
cscript.exe %windir%\system32\slmgr.vbs /ato
echo