Docker-Ui

481 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

docker-ui对比

DockerUI项目已弃

功能

  1. 支持容器管理
  2. 支持镜像管理
  3. 基于docker api,自身也是一个容器。
  4. 稳定性高
  5. 可动态显示显示容器之间关系图
  6. 容器管理,增加端口映射,增加系统变量、映射目录等 缺点
  7. 没有登录验证,因为没有登录体系,目前解决办法是,只开放本地访问,或者通过TLS来对权限进行控制。
  8. 无法分配某容器给某用户。
  9. 不支持多主机。
  10. 不支持集群swarm等
  11. 功能少
  12. 不支持控制台命令 链接
    github.com/kevana/ui-f…
    blog.csdn.net/sannerlittl…

DockerManager(不推荐)

优点: UI界面简单简洁
缺点: 没有权限控制, 2375需要加密通信否则有安全风险
链接
blog.csdn.net/qq_36450484…
github.com/guojiaxing1…

Shipyard(2016不在维护)

功能

  1. 支持镜像管理、容器管理。
  2. 支持控制台命令
  3. 容器资源消耗监控
  4. 支持集群swarm,可以随意增加节点
  5. 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
  6. 有汉化版(2016也不维护了) 缺点
  7. 启动容器较多,占用每个节点的一部分资源
  8. 兼容性性不高,可能是我自身原因,经常打不开首页
  9. 结论
  10. 总体上讲Shipyard功能强大,实用型高,支持集群,支持容器权限分配,是公司不二之选,但是考虑到暂时经常打不开首页,且占用每台服务器较多资源 链接
    www.cnblogs.com/songjy2116/…
    官网: github.com/ehazlett/sh…
    汉化版: registry.hub.docker.com/r/shipyard/…

Rancher(可尝试)

优点

  1. 管理主机集群
  2. 支持多种调度器,通过环境模板,很容易地创建和部署Cattle、Swarm、K8S、Mesos容器集群管理调度平台。 缺点
  3. 镜像管理功能薄弱,无镜像导入、导出功能,镜像只能通过镜像库获取。
  4. Rancher1.6支持Docker Swarm集群技术
  5. Rancher2.0不再支持Docker Swarm 结论: 镜像管理功能薄弱,无镜像导入、导出功能,镜像只能通过镜像库获取。如无镜像导入、导出需求,可作为不二之选

swirl

优点:
国人开发的针对swarm集群管理工具,支持中文,界面清爽简洁
常用管理功能都有: 服务伸缩、监控数据展示、编排等等 缺电:
作者忙于其他事情,项目暂时没更新,一些功能后期完善,如: agent
官网: github.com/cuigh/swirl

Portainer(推荐)

Portainer 是一个轻量级的管理 UI ,可管理不同的 Docker 环境(Docker 主机或 Swarm 群集)的资源容器、镜像、卷、网络等
Portainer 由 2部分组成: Server 和 Agent(可以管理docker所在宿主机的资源, 如删除容器、镜像)
Portainer 1.17+ 仅支持Docker内置的Swarm模式

ui界面操作缺点:
启停删 容器或镜像 都要进对应agent节点,缺少从全局管理的视角

Portainer安装

参考链接

部署先决条件: docs.portainer.io/v/ce-2.11/s…
官网安装: docs.portainer.io/v/ce-2.9/st…
官网docker镜像: registry.hub.docker.com/r/portainer…
推荐Docker Swarm + Portainer blog.51cto.com/wangzhijian…

端口说明

ui api: 9443 30779(监控k8s)
tcp 8000
代理 9001 30778(监控k8s)

环境

centos7 docker-v19.03.12 DockerSwarm已安装 portainer2.11

服务端安装

方法1: 已dcoker容器独立运行
参考: docs.portainer.io/v/ce-2.11/s…

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data \
--name portainer-s portainer/portainer-ce:2.11.1

方法2: 已service形式部署到docker swarm集群中(推荐)
参考: docs.portainer.io/v/ce-2.11/s…

docker service create --replicas 1 --network ops --publish 9000:9000 --constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--name portainer-s portainer/portainer-ce:2.11.1 # 加了这个参数运行失败 -H unix:///var/run/docker.sock 

测试

ip:9000 admin/Dutall_123

客户端安装

Portainer代理作为全局服务部署到集群中的每个节点上
方法1: 容器方式部署

docker run -d -p 9001:9001 --name portainer-c --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:2.11.1

方法2: 服务方式部署(推荐)

curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
docker stack deploy -c portainer-agent-stack.yml portainer