zoukankan      html  css  js  c++  java
  • Ubuntu下部署Portainer管理docker

    在上一篇文章中,我们部署了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中可以继续添加,从而达到一个控制台管理多个集群的目的。

  • 相关阅读:
    算法与数据结构 (四) 排序 一 交换类排序
    算法与数据结构 (三) 二叉树的简单应用 二叉查找树,二叉堆排序
    算法与数据结构 (二) 二叉树的简单实现,非递归的前序遍历 中序遍历 后序遍历
    算法与数据结构 (一) 链表,栈,队列的简单实现
    服务器端的redis和MySQL的远程连接的简单解决方案
    记一次自定义监听器使用spring 管理的bean的问题
    基于java开发的RBAC模型权限管理系统
    2019 本科java开发春招面经(实习)
    记一次Bootstrap框架下 使用Ajax失效的问题
    [转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱
  • 原文地址:https://www.cnblogs.com/xl2432/p/10941940.html
Copyright © 2011-2022 走看看