• 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中可以继续添加,从而达到一个控制台管理多个集群的目的。

  • 相关阅读:
    mybatis源码阅读-Transaction和TransactionFactory(四)
    mybatis源码阅读-SqlSessionFactory和SqlSession(三)
    mybatis使用-高级用法(二)
    mybatis使用-helloword(一)
    Spring Boot-全局异常处理(八)
    Spring Boot-定义拦截器(七)
    Spring Boot-整合redis(六)
    Spring Boot-热部署和Debugger使用(三)
    Spring Boot-整合Mybatis(五)
    netty自定义协议 心跳 断线重连源码
  • 原文地址:https://www.cnblogs.com/xl2432/p/10941940.html
Copyright © 2020-2023  润新知