在上一篇文章中,我们部署了Shipyard来管理docker集群,总体比较简单,而且Shipyard界面风格很简约,还是比较喜欢的,但是正如提出的node节点无法显示bug,以及该项目早已停止维护,让我不得不在另寻可靠的工具。搜索发现,Portainer是一个轻量级的管理工具,很符合的要求。

首先,我们还是要安装docker,这一步不再赘述。然后按以下步骤安装Portainer,非常简单。

主节点

安装swarm

docker pull swarm

# 创建集群
docker swarm init --advertise-addr <MANAGER-IP>

这一步完成时显示如下:

它显示了加入工作节点的办法。到这里,主节点就配置完成,它会默认加入本地节点。

部署Portainer

sudo docker service create \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock

工作节点

工作节点就按照上一步中给出的办法,加入新节点:

sudo docker swarm join --token SWMTKN-1-4zzd3zwswlix4hmxf68byzf3bds5sed2qtqgm1uao9g48tge61-9hu7w2cle8ic55ntnmqlzwuoi 192.168.56.103:2377



PS:注意,加入新的manager节点和worker节点都是相同的命令,但是token不一样。可以通过命令查询token:

docker swarm join-token worker/manager

如果想旧令牌无效并生成新令牌:

docker swarm join-token --rotate

这时在主节点上就可以看到各个节点的信息:

WEB访问

默认对外曝露9000端口,因此你只需访问http://<MANAGER-IP>:9000 就能够访问web端页面。第一次访问需要你创建用户和密码。

总体看,配置非常简单,而且占用的资源非常少。


其实按照创建服务的方法来部署Portainer会存在一个问题就是,它每次重启都会重新挂载一个临时目录,导致需要重复配置账号。为了解决这个问题,也为了能够同时监控多个集群,我们换一种方式。

首先需要曝露docker的2375端口:

# 备份
sudo cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak

然后编辑/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  --containerd=/run/containerd/containerd.sock

然后重启docker:

systemctl daemon-reload

systemctl restart docker

然后创建一个非临时的volum给Portainer使用:


sudo docker volume create portainer_data

然后采用普通容器的方式部署Portainer:

sudo docker run -d -p 9000:9000 --name portainer --restart=always  -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

这样就ok了。

登录后,选择remote,里面Endpoint URL 设为你想要监控的swarm所在主机的ip:2375即可连接,并且在左侧菜单的Endpoints中可以继续添加,从而达到一个控制台管理多个集群的目的。

Ubuntu下部署Portainer管理docker的更多相关文章

  1. Ubuntu下部署Shipyard管理docker

    使用k8s对于我这种新人来说,难度有点大.遂尝试使用Shipyard这个docker web ui工具来进行管理,以方便入门. 首先,我们还是需要在我们的主机上安装docker. 然后官方提供了自动安 ...

  2. 在ubuntu上部署Kubernetes管理docker集群示例, vxlan,gre

    http://www.chenshake.com/openstack-folsom-guide-for-ubuntu-12-04/ http://www.cnblogs.com/sammyliu/p/ ...

  3. Ubuntu 下部署asp.net运行环境

    在Ubuntu下部署asp.net运行环境,网上教程很多,基本都是编译Mono源码,然后安装jexus.但是可能是我最近RP不太好,编译Mono源码一直都是失败,无奈之下只好找另外的方法安装了. 网上 ...

  4. Linux:Ubuntu下部署Web运行环境

    Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...

  5. Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker

    安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...

  6. windows 下部署 .netcore 到 docker

    前面我们演示了如何将 Asp.Net Core 程序部署到 iis 和 部署到 windows 服务.其实前面的都是铺垫,如何将 Asp.Net Core 站点部署到 docker 才是这个系列文章的 ...

  7. Ubuntu下部署java JDK和eclipse IDE

    安装Java编程开发环境: Ubuntu默认安装openjava,可以通过java -version查看是否安装.但我使用Ubuntu9.10升级到10.04LTS时,openjava没有了.另外,如 ...

  8. 设置Portainer管理Docker并且开启https(简单方法)

    1. 序言 Portainer是一个十分好用的docker图形化管理界面,可以很方便的查看容器状态,错误log等等. 2. 安装 安装portainer是十分简单的,只需要执行docker pull ...

  9. Ubuntu下部署SVN+SVNManager

    本文参考了一下博客,特此感谢: 灰烬之灵    一米阳光做IT.测试 环境描述:ubuntu 13.04 1.先创建svn组和svn用户: sudo addgroup svnsudo useradd ...

随机推荐

  1. 初学JavaScript正则表达式(二)

    正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...

  2. 19.8.2 luogu 夏令营 游

    人生第一次游记....是在学校机房,在luogu网校,在炎炎夏日,在薯条汉堡,在自己的博客里... 十二天快吗? 刚上课那会真的比较兴奋,把每天的计划都排的满满的,希望这十二天慢点,再慢点,我得好好过 ...

  3. 1【西北师大-2108Java】第一次作业成绩汇总

    [西北师大-2108Java]第一次作业成绩汇总 经过本次作业的练习,了解了Java最基本的知识和Java的发展:了解了Java到底是一门怎样的语言,也知道了学习Java的乐趣,懂得了去选择Java开 ...

  4. appium Ui自动化调起应用点击

    appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] ar ...

  5. jQuery中的文档处理(五)

    1. append(content|fn), 向每个匹配的元素内部追加内容 在内部结尾添加. 参数说明: content:String, Element, jQuery,要追加到目标中的内容 func ...

  6. CF358D Dima and Hares

    CF358D Dima and Hares 洛谷评测传送门 题目描述 Dima liked the present he got from Inna very much. He liked the p ...

  7. 20191004 「HZOJ NOIP2019 Round #9」20191004模拟

    综述 第一次 rk1 ,激动. 题目是 COCI 18/19 Round #1 的三至五题. 得分 \(100+100+20\) \(\mathrm{cipele}\) 问题描述 HZOJ1313 题 ...

  8. C getchar()

    C getchar() #include <stdio.h> int main() { ; char str[size]; ; char ch; printf("Enter wh ...

  9. Fink| CEP

    什么是复杂事件CEP? 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件. 特征: 目标:从有序的简单事件流中发现一些高阶特征 输入:一个或多个由简单事 ...

  10. 【2019.8.14 慈溪模拟赛 T1】我不是!我没有!别瞎说啊!(notme)(BFS+DP)

    \(IDA^*\) 说实话,这道题我一开始没想出正解,于是写了一个\(IDA^*\)... 但神奇的是,这个\(IDA^*\)居然连字符串长度分别为\(2500,4000\)的数据都跑得飞快,不过数据 ...