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

环境:

角色 机器名称 操作系统 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执行)

在上面提示输入

docker swarm join     --token SWMTKN-1-1lbjx00s1qsjbjfuoq92f6d95mf41arbhwbkkigmo1smjqs38r-8i0bdakwhc3lvbbog8fnmvgmw     192.168.2.30:2377

即可加入集群,注意此处需要修改为一行

docker swarm join --token SWMTKN-1-1lbjx00s1qsjbjfuoq92f6d95mf41arbhwbkkigmo1smjqs38r-8i0bdakwhc3lvbbog8fnmvgmw 192.168.2.30:2377

坑1:加入集群命令只可以用一行,不可以使用\来进行换行

坑2:一定要在防火墙打开相应的规则,打开2377/TCP、7946/TCP、7946/UDP、4789/TCP、4789/UDP端口

坑3:目前测试Linux可以加入Windows Swarm集群,Windows也可以加入Linux Swarm集群,但是目前无法管理集群

5.服务端口映射问题

在Linux环境下我们可以通过

docker service create -name web -p 80:80 nginx

在执行之后各个节点都可以通过80端口进行服务,但是在Windows是不行的

docker service create -name iis -p 80:80 microsoft/iis执行之后是无法通过80端口访问

目前是通过

docker service create -name iis -p mode=host,target=80,publish=80 microsoft/iis

然后通过docker service ps iis

C:\Users\Administrator>docker service ps iis
ID            NAME   IMAGE                 NODE   DESIRED STATE  CURRENT STATE        ERROR  PORTS
e118tf9vu15l  iis.2  microsoft/iis:latest  Web32  Running        Running 2 hours ago         *:8090->80/tcp

可以看到容器在Web32上,这个时候访问192.168.2.32:8090即可正常访问,但是访问主机的8090端口是无法使用的

6.Docker私有仓库配置

配置私有仓库

方法1:更改注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Docker]

修改为C:\Program Files\Docker\dockerd.exe --run-service --insecure-registry "192.168.2.234:5000"

方法2:修改Docker配置文件,建议修改配置文件

C:\ProgramData\docker\config\daemon.json

{

"insecure-registries" : ["192.168.2.234:5000"]

}

如果没有该文件可以创建以ASSIC形式

时间: 2024-08-04 11:14:01

Windows利用Swarm原生Docker集群踩坑总结的相关文章

阿里云ECS搭建Kubernetes集群踩坑记

阿里云ECS搭建Kubernetes集群踩坑记 [TOC] 1. 现有环境.资源 资源 数量 规格 EIP 1 5M带宽 ECS 3 2 vCPU 16 GB内存 100G硬盘 ECS 3 2 vCPU 16 GB内存 150G硬盘 SLB 2 私网slb.s1.small 2. 规划 坑: 上网问题,因为只有一个EIP,所有其它节点只能通过代理上网; 负载均衡问题,因为阿里不支持LVS,负载均衡TCP方式后端又不支持访问负载均衡,HTTP和HTTPS方式,只支持后端协议为HTTP; 为了避免上

Swarm实现Docker集群的搭建和管理。

1.Swarm是一个由Docker开发的调度框架. (图网上找的) 2.负载均衡: Docker称之为入口负载均衡(ingress load balancing).它的工作方式是,所有worker节点都监听在发布的服务端口上.当该服务被外部系统调用时,收到流量的节点会通过Docker提供的内部DNS服务,将流量负载均衡不同的worker上. (图网上找的) 3.docker集群搭建. (1).时间同步:yum install –y ntpdatentpdate us.pool.ntp.org (

Swarm搭建 Docker集群

一.环境准备 1.准备服务器如下: 172.19.230.69 node1 172.19.230.70 node2 172.19.230.64 node3 2.修改主机名: hostnamectl set-hostname node1 3.关闭防火墙 systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动 4.修改docker监听端口 vi /lib/syste

Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息

前言: 之前有说过elk收集nginx日志, 现在来说一下收集容器集群的日志收集Elk的安装这里不在说了,上来直接怼, 这里是elk的服务器:的服务状态:以及端口 Logstash是主要的配置内容这里: 如下 input { beats { port => 5044 } } filter { if "nginx-accesslog" in [tags] { grok { match => { "message" => "%{HTTPDAT

Docker 集群环境实现方式

Docker 集群环境实现的新方式 近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行

Docker 集群环境实现的新方式

近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技术更新的步伐,导致企业架构要随时更改以适合业务需求.当前,越来越多的公司都已将以 Docker 为代表的容器技术用于企业级业务平台,比如:腾讯,京东,美团,新浪,阿里巴巴等互联网公司.数据的安全.Docker 容器的稳定运行是众多用户关注的,这就要求我们提供一套行之有效的管理大型容器集群的整体解决方

"三剑客”之Swarm探索应用集群服务发布

1.前言 在前两篇文章中,大家了解了swarm集群的管理.数据的持久化等技术点.大家可能会问,我会了这些有啥用?公司的业务大多数是跑在nginx.tomcat.php等这些集群应用中,技术是死的,思路是活的.在本文中我们来通过相关案例一起去探索这些应用集群的服务是如何发布的. 2.环境 本文的环境还是沿用上次的swarm集群环境,不过这一次多增加一台nginx服务器,用4台服务器来演示.如果你没有这么多服务器,可以把其中一台agent节点替换成nginx服务器也一样.并且在swarm集群中创建3

05 Docker集群/基础设施 - DevOps之路

05 Docker集群/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Docker的集群目前主流的方案: Swarm Kubernetes Docker Swarm 集群 是用Swarm集群来部署一个无状态的服务: 目前有三台物理机node01.node02.node03,在node01上初始化Swarm: docker swarm init --advertise-addr 192.168.0

docker集群

Docker 版本12前无集群 版本12后有集群 --docker swarm 集成docker engine --k8s google:未来科技 编排能力:可以做service也可以允许单个容器 node: 1.manager:将任务分解给worker执行.(管理) 可以有多个,但是只会有一个leader 2.work:定期更新状态给manger来维护集群 docker service 定义在node节点上执行的任务. vi /etc/hosts 192.168.43.214 node1 19