DockerUI和Shipyard对比

相似

基于Docker API,提供等同Docker命令行的大部分功能,支持container管理,image管理。

web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理

差异

dockerui能修改容器配置

docker vue前端api地址配置_网络

dockerui能管理和新增网络

docker vue前端api地址配置_docker_02

dockerui能新增volume

docker vue前端api地址配置_数据库_03

Shipyard能创建容器

docker vue前端api地址配置_docker_04

Shipyard能拉取镜像

docker vue前端api地址配置_docker_05

Shipyard能多主机管理,支持节点动态集群,可扩展节点的规模(swarm、etcd方案)

docker vue前端api地址配置_运维_06

Shipyard能管理仓库

docker vue前端api地址配置_数据库_07

Shipyard能实现容器的伸缩、终端、stats等功能

docker vue前端api地址配置_docker vue前端api地址配置_08

DockerUI

优点

支持容器批量操作,可以修改容器配置(需要重启容器),查看日志、top等命令
支持image管理
支持网络管理,可以创建、修改等
支持镜像管理
支持查看拓扑

缺点

不支持多主机
不支持容器创建
不支持容器终端

部署

docker run -itd --memory 1g --cpuset-cpus=0 --name dockerui --hostname dockerui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker

http://宿主机IP:9000

Shipyard

Shipyard是在Docker Swarm实现对容器、镜像、docker集群、仓库、节点进行管理的web系统。

特性

Shipyard是完全基于Docker API,支持container管理、engine管理(一个engine就是监听tcp端口的docker daemon)。

优点

支持多主机;
容器管理:除了管理生命周期外,还支持批量、终端、log、新增、伸缩、stats等等。
镜像管理:支持修改tag、pull等
新增仓库

缺点

不支持修改容器配置。

部署

Shipyard是一款开源的图形化的Docker管理工具,现在官方有了自动安装脚本,使用非常方便。

服务器端

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

Shipyard 启用了7个容器,默认访问端口是8080,默认用户名和密码是admin 和 shipyard

节点

加入服务器

curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://服务器端地址:4001 bash -s

退出服务器

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

了解Shipyard

几个概念

engine

一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp端口的docker daemon。

shipyard管理docker daemon、images、containers完全基于Docker API,不需要做其他的修改。

另外,shipyard可以对每个engine做资源限制,包括CPU和内存;

因为TCP监听相比Unix socket方式会有一定的安全隐患,所以shipyard还支持通过SSL证书与docker后台进程安全通信。

rethinkdb

RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、
扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。

Shipyard组件

shipyard是由shipyard控制器以及周围生态系统构成,以下按照deploy启动顺序进行介绍(下面几个就是shipyard使用脚本安装后,启动的几个容器名)

RethinkDB

deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息

Discovery

为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd。

shipyard_certs

证书管理容器,实现证书验证功能

Proxy

默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCP到Docker监听的UNIX Socket。

Swarm Manager

Swarm管理器

Swarm Agent

Swarm代理,运行在每个节点上。

Controller

shipyard控制器,Remote API的实现和web的实现。