|
转载自 http://blog.csdn.net/nidnil/article/details/51326735
声明:
微软官方给出的部署步骤都是基于 PowerShell 的,如果要在上面部署 Docker,需要对原命令进行修改,否则不支持 docker 工作目录的软连接。
本工具仅使用 cmd 进行部署,并且没有“域”相关操作。
docker 服务,依照官方 TP5 (Windows Server 2016 Technical Preview 5 )教程,使用的是开机启动的“计划任务”来实现,
之前尝试过 sc.exe 来进行,但是因为 dockerd.exe 无 MainServer 函数,会在服务启动 30 秒后挂掉。
而其他的基于 cmd 和 PowerShell 的多线程方案,都会在连接 session 关闭后 kill 掉……
而单纯使用 schtasks 命令,无法指定计划任务的工作路径,将导致计划任务启动失败。
使用官网提供 PowerShell 命令定制计划任务,没有处理电池问题(使用笔记本搭建会有印象),所以采用 schtasks 读取 xml 的方式。
注意:此工具建立的 docker 服务默认是开放的,没有限制客户端连接,如果想要使用安全连接,请变更 runDockerDaemon.cmd 中的 dockerd 命令,并设置自签名密钥的位置(密钥需要单独生成)。
脚本:
代码整理好放到 github 上了,会不定期更新,地址: https://github.com/nidnil/extcmd/blob/master/nano.cmd
准备:
注意,此脚本需要使用虚拟光驱挂载 TP5 iso 镜像,脚本本身会遍历所有光驱。
操作说明:
直接执行 nano.cmd 或 nano.cmd /? 可以列出所有支持的方法。
使用 nano.cmd [方法名] /? 可以查看方法的用法。
其中 nanowim 和 nanovhd 会执行微软官方博客上的创建 wim 或 vhd 的脚本,并自动下载 docker 文件和配置首次启动脚本。
详细参数使用 nano.cmd nanovhd /? 查看。
使用 down 命令可以额外下载 docker 文件和基础镜像文件。基础镜像文件便于离线安装。
详细参数使用 nano.cmd down /? 查看。
首次启动脚本:
电源选项 “合上盖子操作” 设置为 无动作(需重启,笔记本有效)
使用 DHCP
开启 SMB 共享
docker 命令:
首次执行 docker 命令时,会自动部署 docker 服务并进行初始化操作。
如果需要拉取 docker 镜像,先登录远端 NanoServer PowerShell,(使用 rs.cmd ps)
然后执行
Install-ContainerOSImage -WimPath D:\NanoServer.wim -Force
其中 nanoserver.wim 文件可以使用 down 命令进行下载,并使用 smb 文件共享复制到远端 NanoServer 设备上。
完成后如果执行 docker images 命令没有看到对应的镜像,需要使用 shutdown /r /t 5 命令进行重新启动。
注意:
使用 pkg 命令制作的 NanoServer ,第一次启动后需要 F11 修改密码,否则远程连接无法使用。
(nanowim 或 nanovhd 命令则会直接嵌入密码,无需 F11。)
可以在设置密码后查看 NanoServer 的 ip 地址(貌似就这一次机会)。
如果使用 pkg 命令,不要画蛇添足的在 SetupComplete.cmd 中加入启动 docker 计划任务的命令,会导致 NanoServer 切换到守护进程的标准输出界面,造成无法进入密码修改流程。
关于共享:
访问 NanoServer 的 C 盘,需要在 访问路径根目录后面加上 c$,D盘 则是 d$ 。密码与 NanoServer 的密码相同。e.g. \\192.168.1.10\c$\Windows
连接:
以 NanoServer 为服务端,客户端需要开启 WinRM。
在 cmd 上执行
winrm quickconfig
winrm set winrm/config/client @{TrustedHosts="*"}
rs.cmd:
可使用脚本所在目录生成链接客户端脚本 rs.cmd。需要编辑其中的默认密码 Tuva 为你设置的密码,将 ip 变更为Nanoserver 的ip。
使用 rs.cmd cmd 或 rs.cmd ps 分别进入远程 cmd 或远端 powershell。
也支持其他的命令,如 rs.cmd ipconfig
手动 cmd:
如果使用 cmd 手动进行连接,每次连接执行
chcp 65001
winrs.exe -r:127.0.0.1 -u:Administrator -p:Tuva cmd
即可,其中 Tuva 替换成你自己设置的 密码。127.0.0.1 替换成 NanoServer 的 ip ,最后的 cmd 可以换成其他命令,比如 ipconfig。但是注意,不要在这加上 PowerShell,你会看到你不愿意看到的效果(PowerShell 的界面会跑到 NanoServer 上,并且使用 NanoServer 的键盘来操作,看样子无头系统只是限制)……想使用 PowerShell 进行远程连接,请看下面。
手动 PowerShell:
如果使用 PowerShell 作为客户端连接,可以在 cmd 中使用以下命令,其中 Tuva 替换成你自己设置的 密码,127.0.0.1 替换成 NanoServe 的 ip。
PowerShell.exe -NoExit -Command "$password = ConvertTo-SecureString \"Tuva\" -AsPlainText -Force" ; "$cred= New-Object System.Management.Automation.PSCredential (\"Administrator\", $password )" ; "Enter-PSSession -ComputerName 127.0.0.1 -Credential $cred"
或者使用微软推荐的 PowerShell 命令,需要每次输入密码。
建议:
使用 nanovhd 的方式进行部署。使用 bcdboot 命令进行启动配置。它可以自动处理 vhd 的启动问题,用来代替 bcdedit 繁杂的命令。
详情在 cmd 中使用
bcdboot /?
参考资料:
https://msdn.microsoft.com/en-us ... 7217396#nano-server
https://technet.microsoft.com/en ... x#bkmk_ManageRemote
https://blogs.msdn.microsoft.com/cciccat/2015/05/26/nano-server/
https://thecloudgeek.net/category/windows-server/
|
|