无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3636|回复: 4
打印 上一主题 下一主题

[教程] TP5 NanoServer 物理机部署脚本 + docker 部署

[复制链接]
跳转到指定楼层
1#
发表于 2016-5-24 16:28:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转载自 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/
2#
 楼主| 发表于 2016-5-24 16:30:36 | 只看该作者
关于 TP5  iso 镜像,如果不使用 pkg 命令,则无需挂载
回复

使用道具 举报

3#
发表于 2016-5-24 19:11:33 | 只看该作者
以前只有linux版的docker
为了discuss这个社区程序研究了半天
电脑配置不行 架起来只能玩玩







    神奇的小尾巴:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36  (zh-CN)
    ——2016/5/24 下午7:11:34
             

    点评

    做项目测试用还是可以的,我用了公司廉价出售的 ddr2 的笔记本,一个搭建了 boot2docker ,另一个就是 nanoserver docker 了。 boot2docker 就 20多MB,直接写入 U盘 live系统启动。不用虚拟机,测试,搭建基于 doc  详情 回复 发表于 2016-5-24 22:18
    回复

    使用道具 举报

    4#
     楼主| 发表于 2016-5-24 22:16:23 | 只看该作者
    使用 nano 脚本快速建立系统 vhd 可使用 nano nanowim 命令。

    将建立的 vhd 挂载到 vbox 可以直接启动,记得一定要配置网络。
    或者复制到物理机硬盘上,使用 nano mntvhd 命令进行 vhd 挂载。
    使用 bcdboot 命令建立 vhd 的启动信息。然后用 nano unmvhd 卸载 vhd,重启即可。

    进入后,第一步是通过 powershell 连接到 nanoserver 上,执行 docker 命令,会进行初 docker 服务的始化

    之后执行 Install-ContainerOSImage -WimPath D:\NanoServer.wim -Force 然后重启 nanoserver
    之后就可以进行 docker pull 命令和 docker run 命令了
    回复

    使用道具 举报

    5#
     楼主| 发表于 2016-5-24 22:18:50 | 只看该作者
    sysop 发表于 2016-5-24 19:11
    以前只有linux版的docker
    为了discuss这个社区程序研究了半天
    电脑配置不行 架起来只能玩玩

    做项目测试用还是可以的,我用了公司廉价出售的 ddr2 的笔记本,一个搭建了 boot2docker ,另一个就是 nanoserver docker 了。
    boot2docker 就 20多MB,直接写入 U盘 live系统启动。不用虚拟机,测试,搭建基于 docker 的小型集群还是可以用用的。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

    闽公网安备 35020302032614号

    GMT+8, 2024-11-17 17:37

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表