Windows利用Swarm原生Docker集群踩坑总结

时间:2021-09-11 09:49:40

标签:windows docker swarmkit

环境:

角色   机器名称   操作系统   IP   备注  
Mater   Web30   Windows Server 2016 GUI   192.168.2.30   安装最新推荐补丁  
Node   Web31   Windows Server 2016 Core   192.168.2.31   安装最新推荐补丁  
Node   Web32   Windows Server 2016 Core   192.168.2.32   安装最新推荐补丁  


第一坑:Windows Server 2016 Core

1.操作系统分区坑

   由于我们使用的Windows镜像都是基于microsoft/windowsservercore大小都在10G左右,还需要安装IIS、aspnet等等,另外如果涉及到镜像导出也会占用C盘空间,如果是做Docker的话建议C盘空间不小于60G,或者干脆只分C盘。

  踩坑解决办法:在硬盘还有大量富余空间的情况下,可采用挂载文件夹的形式,挂载C:\ProgramData\docker\windowsfilter文件夹


2.命令行如何设置机器IP及机器名称及开启远程桌面

在CMD命令提示符下执行sconfig即可,建议开启远程桌面方面命令输入

 

3.安装Docker之前一定需要安装最新的Windows补丁

方法:sconfig--->6)下载并安装更新--->R)仅搜索推荐的更新---->A)安装所有


4.文件如何复制到Windows Server Core下,在命令行下

打开可写共享

cd \

mkdir share

net share share=c:\share /grant:everyone,full

连接共享

net use z: \\192.168.2.30\share password /user:administrator

于是就映射共享到Z盘,进入Z盘即可操作文件

删除共享

net share c:\share /del /y


5.在Windows命令行如何查看文件

type filename.txt

追加文件

echo 127.0.0.1 web30 >>\windows\system32\drivers\etc\hosts


6.查看Windows进程

tasklist


7.杀死进程

tskill


第二坑:Windows 2016原生Docker

1.Windows安装Docker

在命令提示符出入powershell,

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force Install-Package -Name docker -ProviderName DockerMsftProvider

如果第二部提示未安装补丁,则需要安装最新Windows补丁,,输入sconfig第6步

安装完成之后重启服务器


2.配置所有服务器的防火墙规则

TCP 端口 2377 用于群集管理通信

TCP 和 UDP 端口 7946 用于节点间通信

TCP 和 UDP 端口 4789 用于覆盖网络通信

netsh advfirewall firewall add rule name="swm 2377" dir=in action=allow protocol=TCP localport=2377  netsh advfirewall firewall add rule name="swm 7946" dir=in action=allow protocol=TCP localport=7946 netsh advfirewall firewall add rule name="swm 7946udp" dir=in action=allow protocol=UDP localport=7946 netsh advfirewall firewall add rule name="swm 4789" dir=in action=allow protocol=TCP localport=4789 netsh advfirewall firewall add rule name="swm 4789udp" dir=in action=allow protocol=UDP localport=4789


3.初始化群集模式

在Master上执行

C:\> docker swarm init --advertise-addr=192.168.2.30 --listen-addr 192.168.2.30:2377

坑:在Linux上执行docker swarm init即可初始化集群,但是在Windows上会卡住不动,在windows上需要指定IP及端口


4.加入集群(在Web31和Web32执行)