使用Portainer管理阿里云Swarm集群

做此行为的原因:是公司业务主要通过docker镜像部署在阿里云上面,使用了阿里云的Swarm集群和负载均衡产品。
应该是由于技术前景的原因,阿里云早些时候提示不再支持Swarm,且年底将下线控制台:
阿里云的通知
在此情况下,开始寻找替代方案。
1、迁移到k8s
2、继续使用当前模式,自己部署swarm集群
虽然k8s是主流和未来,但是考虑到公司和业务情况和学习成本。决定暂缓升级k8s,部署自己swarm控制台。
比较了几种图形界面控制台,选择了Portainer。开源项目,GitHub还是活跃状态,资料较多。https://www.portainer.io
到某个节点服务器下载安装:docker pull portainer/portainer
docker run -d -p 9000:9000 --restart=always --name prtainer portainer/portainer
如果你也是使用了负载均衡那么需要将9000端口加入监听,总之让9000能访问
然后浏览器访问对应主机或者域名的9000端口,进入如下页面。使用Portainer管理阿里云Swarm集群_第1张图片
注册后选择管理模式(这里图是网上找的,选择Remote后先不填写):
使用Portainer管理阿里云Swarm集群_第2张图片
这里由于阿里上面已经是swarm集群了,可以直接连接(之前不知道,打算重新部署swarm集群并管理,自己通过docker命令安装swarm集群,也比较简单)。来到集群——管理集群 ,如图复制接入点地址以及下载证书
使用Portainer管理阿里云Swarm集群_第3张图片使用Portainer管理阿里云Swarm集群_第4张图片
接着在之前配置页面打开TLS选项,name随意输入一个你想的集群名称。填入复制好的接入地址,再上传刚刚下载解压出来的三个文件
使用Portainer管理阿里云Swarm集群_第5张图片
上传好对应的证书秘钥 点击连接按钮就ok了。自建集群可以直接连接,不是必须通过TLS方式。
使用Portainer管理阿里云Swarm集群_第6张图片
上图就是连接后的集群信息,237是上个页面刚输入的名字,运行了6个应用,33个容器等信息。这里应该可以管理多个集群,只是现在就一个。点击进入后进入集群管理页面,就完成了替代阿里云Swarm集群控制台的目的。
使用Portainer管理阿里云Swarm集群_第7张图片
点击stacks后点击addstack添加新的应用,通过docker-compose进行配置编排,注意这里显示支持version2规范。若有需要可以查看官方文档:https://docs.docker.com/compose/compose-file/
部署中遇到过编排容器时启动容器失败的情况(该节点端口被已有容器占用),本该7个容器完成后只运行了6个容器,并且Portainer控制台没有明显提示,通过排查节点解决然后重新部署完成。遇到此类问题需要有一些docker命令基础来解决,这里提示一下。
使用Portainer管理阿里云Swarm集群_第8张图片使用Portainer管理阿里云Swarm集群_第9张图片
可以直接管理之前已有的docker应用,不过有个非Portainer创建的感叹号。最后一个便是刚刚建立的,经测试一切正常。其它基本操作也都支持,这里就不一一截图了。
阿里云上面也能管理刚刚通过Portainer部署的test20191219应用,说明相互替代都没什么问题。
使用Portainer管理阿里云Swarm集群_第10张图片
至此部署测试基本完成,后面要是遇到其它问题将会更新上来

2020年1月18日 关于拉取私有仓库镜像的补充:
程序更新后,镜像上传到仓库,发现在Portainer控制台部署时拉取失败:使用Portainer管理阿里云Swarm集群_第11张图片
根据内容想到应该是私有仓库的问题,还没有配置docker仓库的地址和用户名密码。(我们使用的是阿里云的docker镜像仓库)。
配置的地方如下:使用Portainer管理阿里云Swarm集群_第12张图片
未配置的话下面列表是空的,图上是我已经配好两个仓库地址后的样子。
点击add registry ->
使用Portainer管理阿里云Swarm集群_第13张图片
如图所示,添加成功后 如果信息准确,就可以拉取到你的镜像啦!
另外说一点:阿里云的私有仓库有多个访问仓库,用于内外网区分。注意你配置的仓库地址要和部署时填写的镜像链接是一个仓库地址
使用Portainer管理阿里云Swarm集群_第14张图片
开始我配置了公网地址仓库,然后部署时填的是专有网络(内部局域网更快)的镜像地址,这样也是拉取不到的,然后同样的方式配置一个镜像仓库就好了。

你可能感兴趣的:(docker)