哈喽,这篇Docker swarm的教程写得挺详细的,看着挺有意思的。你从安装到配置一步步讲得清清楚楚,特别是那个Portainer和私有registry的部分,感觉很实用啊。
就是有个问题,你说的那个swarm集群没leader的情况,一般怎么解决?你帖子里的方法有效不?
先谢过你的分享了,我得找时间跟着试试。期待你后续还有更多的内容!
哈喽,这篇Docker swarm的教程写得挺详细的,看着挺有意思的。你从安装到配置一步步讲得清清楚楚,特别是那个Portainer和私有registry的部分,感觉很实用啊。
就是有个问题,你说的那个swarm集群没leader的情况,一般怎么解决?你帖子里的方法有效不?
先谢过你的分享了,我得找时间跟着试试。期待你后续还有更多的内容!
哈喽,这篇Docker swarm的教程写得挺详细的,看着挺有意思的。你从安装到配置一步步讲得清清楚楚,特别是那个Portainer和私有registry的部分,感觉很实用啊。
就是有个问题,你说的那个swarm集群没leader的情况,一般怎么解决?你帖子里的方法有效不?
先谢过你的分享了,我得找时间跟着试试。期待你后续还有更多的内容!
在图中,服务器作为一个想创建集群的机器,执行 docker swarm init 就创建了一个 swarm 集群,等待其它机通过 docker swarm join 加入到集群(manage 或 worker 身份),而 leader 就是集群创建者,一般情况下这样就完成了。
另外 leader 消失的几率是有,不过账本都是证书问题? 在这个地方有提到,引用点:https://blog.51cto.com/u_15499155/5044021
服务器不关机则 leader 常在,manage 只是一种像是分配的管理员,用来管理其它节点或管理服务,也应该可以让其它节点通过管理员节点加入到集群。
手上没有太多机器,从集群结构上来看,把 leader 看成主路由器, manage 就看成连接到主路由器的副路由器吧,worker 就当是其它上网的终端吧。
我也就只是玩了一下,没见过什么大场面,在小场面里常年(日)开机的一台小机器就当 swarm 集群了,其它的只是随时部署上去的一些服务,场景不大,没有 manage 身份不能操作 swarm 里的服务创建与更新,所以小笔记本就是一个 manage 了(但是为什么不用 portainer 呢),基本没有 worker 加入,但探索时拿了其它有 docker 的机器(6core 8g ram 的配置)测试 worker 身份加入。然后 manage 构建完成镜像就直接指派给 node.labels.user=6c8g 的工作者(上线了就跑,没在就等待)。当然先给那个新来的 worker 更新 node labels,不然你说的 6c8g 是指谁呢(命令行就完成的事为什么要用 portainer 呢)
完事,疯狂部署你的服务,各种 stack 疯狂改,或填表单一样创建 service ,或从古老传统 docker run 命令行创建单容器啥的开始。
docker swarm 只是你不配用 k8s 时的一种原生方案
这是一个我在 2024 年 1 月 12 日画的图 - 随便看看吧
安装
基本配置
配置 daemon.json
配置不安全(未开启https)的 registry
部署服务
Portainer
拉取镜像 - 来源于 dockerhub
创建存储卷 - 持久的存储卷
部署容器
Registry
拉取镜像
创建持久存储卷
部署容器
部署带 https 认证的 registry (未验证)
一些技巧 - 运行并改变容器的入口点,如调用容器内命令完成一件事
调用 registry 中的 htpasswd 工具来生成配置
Registry Web
拉取镜像
部署容器
后续使用说明
一种很新鲜的部署
构建一个运行环境
使用 Dockerfile 基于这个运行环境镜像构建你的定制服务镜像
创建 Makefile 来自动构建你的容器镜像并推送到 registry 并提供部署能力
portainer 与 docker hub 镜像转存本地
从 dockerhub 中获取镜像并转储到私有 registry 中。
在 portainer 中使用私有 registry 中的镜像直接部署服务栈
你可能需要配置的 node labels
doker node ls 中列出节点列表找到要要配置的机器
异常情况处理 - The Swarm does not have a leader
关键信息
重建 swarm 集群 - 在发生错误的集群节点上执行,一般是 leader 也就是服务器本身
(可选)其它管理器节点重新加入节点,也是执行 1 的命令?