Docker的web端管理平台对比(DockerUI 、Shipyard、Portainer、Daocloud)

34,828 阅读6分钟

前言

最近,为了方便对命令行过敏的测试或开发人员,我决定部署一个可视化的管理平台来管理docker,在我重装十几次系统(当然,只是虚拟机镜像克隆),对比之后,终于选择了一款心仪的管理平台。

部署docker环境

安装/升级你的Docker环境,建议使用过阿里云的镜像仓库下载:mirrors.aliyun.com/help/docker-engine
或执行以下命令:

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

另外,建议使用阿里云的镜像加速,以方便后期pull 镜像。申请个人唯一加速地址cr.console.aliyun.com/
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://***.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

DockerUI

DockerUI基于Docker API,提供等同Docker命令行的大部分功能。

部署

[root@localhost ~]# docker pull uifd/ui-for-docker 
Using default tag: latest
latest: Pulling from uifd/ui-for-docker
841194d080c8: Pull complete 
Digest: sha256:fe371ff5a69549269b24073a5ab1244dd4c0b834cbadf244870572150b1cb749
Status: Downloaded newer image for uifd/ui-for-docker:latest
[root@localhost ~]# docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
ac85040b8a9f2f203c22ba2e4d90a830e31d89a1d6ce77579a7b95de5da51e01

拉取镜像

docker pull uifd/ui-for-docker 

启动容器

docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker 

界面

打开ip:9000,首页:


容器管理:

容器网络,这里可以显示容器与容器之间的关系。

容器管理:

总结

优点:

  1. 支持容器管理
  2. 支持镜像管理
  3. 基于docker api,自身也是一个容器。
  4. 稳定性高
  5. 可动态显示显示容器之间关系图
  6. 容器管理,增加端口映射,增加系统变量、映射目录等

缺点:

  1. 没有登录验证,因为没有登录体系,目前解决办法是,只开放本地访问,或者通过TLS来对权限进行控制。
  2. 无法分配某容器给某用户。
  3. 不支持多主机。
  4. 不支持集群swarm等
  5. 功能少
  6. 不支持控制台命令

结论

因为没有登录体系,所以很难在公司里流通。因为这样,每个人都可以去控制,即使通过TLS来控制权限,但无法将容器管理权限分配给某个用户,所以最终放弃该平台。

Shipyard

Shipyard是在Docker Swarm的基础上,管理Docker资源,包括容器,镜像,注册表等。

部署

这里以官网自动化部署为例,部署代码如下

curl -sSL https://shipyard-project.com/deploy | bash -s

注意:这将在端口2375上暴露Docker Engine。如果此节点可以在安全网络之外访问,建议使用TLS。

支持集群,所以可以添加节点:

curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://10.0.0.10:4001 bash -s

其中上段代码中ip地址,为第一台服务器的ip地址。
结果它硬生生的启动了7个容器,其中2个swarm的容器

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                            NAMES
fb81fb51d619        shipyard/shipyard:latest       "/bin/controller -..."   2 minutes ago       Up 37 seconds       0.0.0.0:8080->8080/tcp                           shipyard-controller
e9e462e168ea        swarm:latest                   "/swarm j --addr 1..."   2 minutes ago       Up 2 minutes        2375/tcp                                         shipyard-swarm-agent
8913ed62608d        swarm:latest                   "/swarm m --replic..."   2 minutes ago       Up 2 minutes        2375/tcp                                         shipyard-swarm-manager
ee1e25e0235d        shipyard/docker-proxy:latest   "/usr/local/bin/run"     2 minutes ago       Up 2 minutes        0.0.0.0:2375->2375/tcp                           shipyard-proxy
f10edb7eda1c        alpine                         "sh"                     3 minutes ago       Up 3 minutes                                                         shipyard-certs
6411b4226a6f        microbox/etcd:latest           "/bin/etcd -addr 1..."   3 minutes ago       Up 3 minutes        0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
eaf008cbebae        rethinkdb                      "rethinkdb --bind all"   3 minutes ago       Up 3 minutes        8080/tcp, 28015/tcp, 29015/tcp                   shipyard-rethinkdb

增加节点的话,节点机器会自动运行5个容器,不得不说功能强大,还是有代价的。

界面

容器列表


容器详情

容器监控

容器控制台

总结

优点:

  1. 支持镜像管理、容器管理。
  2. 支持控制台命令
  3. 容器资源消耗监控
  4. 支持集群swarm,可以随意增加节点
  5. 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
  6. 有汉化版

缺点

  1. 启动容器较多,占用每个节点的一部分资源
  2. 兼容性性不高,可能是我自身原因,经常打不开首页。

结论

总体上讲Shipyard功能强大,实用型高,支持集群,支持容器权限分配,是公司不二之选,但是考虑到暂时经常打不开首页,且占用每台服务器较多资源,暂时列为备选方案。

Portainer

Portainer是一款轻量级docker容器管理平台,占用资源少,支持集群,支持权限分配。

部署

docker run -d -p 9000:9000 portainer/portainer

部署Portainer来管理Swarm群集,也可以在Docker群集中直接部署Portainer作为服务。

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

界面

首页面


镜像管理

用户管理

容器监控

节点管理

控制台

总结

优点

  1. 支持容器管理、镜像管理
  2. 轻量级,消耗资源少
  3. 基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
  4. 支持权限分配
  5. 支持集群

缺点

  1. 功能不够强大。
  2. 容器创建后,无法通过后台增加端口。

结论

虽然Portainer存在一些问题,但已经可以满足基本需求,且支持权限分配,最终我选择了它。

Daocloud

Daocloud 是一个老牌的第三方管理平台,可以自由增加机器节点,功能极其强大。

部署

登录注册dashboard.daocloud.io
增加主机节点

curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s ****密钥

界面

容器列表


容器日志

容器管理

可部署多个容器,扩容

镜像平台

总结

优点:

  1. 支持镜像管理、容器管理。
  2. 支持控制台命令
  3. 容器资源消耗监控
  4. 支持集群可以随意增加节点
  5. 中文平台
  6. 镜像下载
  7. 容器扩容、管理

缺点

  1. 管理平台无法部署到本地服务器
  2. 部分高级功能收费

结论

因为闭源,且收费,暂且团队放弃它,,但作为自己测试使用,强烈推荐使用它,因为我们点点鼠标即可轻松部署一个强大的管理docker平台。

最终总结

经过对docker管理平台的分析,相信大家一定有了自己的认识,有条件可以自己尝试下部署,如果有新的心得体会或者更好的平台记得告诉我哦。