我正在参加「掘金·启航计划」
前言
当前市面上有很多docker可视化工具可以提供类似功能,比如UI For Docker、Portainer、Shipyard等,关于这三款工具可以参考:《三种docker可视化工具》。而本次文章的重点则是介绍一款强大的、开源的工具:Docker UI。
一、简介
DockerUI是一款开源的、强大的、轻量级的Docker管理工具。DockerUI覆盖了 docker cli 命令行 95% 以上的命令功能,通过可视化的界面,即使是不熟悉docker命令的用户也可以非常方便的进行Docker和Docker Swarm集群进行管理和维护。
DockerUI后端使用Go语言开发,前台框架使用CubeUI。通过Docker Restful API,经过Go语言编写的Proxy端, 实现和Docker Daemon进行通信,从而实现Docker的管理命令和维护命令。
二、特征
- Docker主机管理管理 数据卷管理、镜像管理、容器管理、构建管理、仓库配置管理、网络配置管理
- Docker swarm集群管理 集群配置信息、节点管理、服务管理、任务管理、密码管理、配置管理
- 任务安排 Docker任务调度、docker swarm任务调度
三、安装
安装方式和步骤在GitHub或是项目下载下来以后的README.md文件中都有说明:
一种是从GitHub安装,一种是通过docker进行安装。
1.常规方式安装(推荐)
1)下载docker.ui源码
git clone https://github.com/gohutool/docker.ui.git
2)安装golang运行环境
docker.ui 运行依赖go环境,需要提前安装go环境。安装过程整体比较简单:
① 创建go文件夹
cd /home
mkdir go
② 下载go压缩包并解压缩
golang.google.cn/dl/,选择对应系统下载文件
也可以通过wget命令下载:
wget https://golang.google.cn/dl/go1.19.1.linux-amd64.tar.gz
tar -xvf go1.19.1.linux-amd64.tar.gz
③ 添加到环境变量
编辑/etc/profile,添加如下内容:
export GO_HOME=/home/golang/go
export PATH=$PATH:$GO_HOME/bin
④ 重载环境变量
source /etc/profile
⑤ 验证是否安装成功
go --help
出现以下信息表示安装配置成功:
3)项目配置
进入docker.ui项目目录,执行以下命令,编译生成server文件
export GO111MODULE=on
export GOPROXY="https://goproxy.cn,direct"
go mod tidy
go mod download
go build -o server . # 执行完成后目录下会多出一个server文件
4)启动服务
./server
启动后会开放8999端口,可以通过 http://ip:8999 进行访问
5)创建启动脚本
通过./server启动会一直处于前台运行,无法再进行别的操作,一旦Ctrl+C,将终止程序进程。对此,我们可以创建一个启动脚本start.sh,达到后台运行的目的,脚本内容如下:
nohup ./server >nohup.out 2>&1 &
其中:
- nohup:即no hang up,放在命令的开头,表示不挂起,使进程保持运行状态,一般配合&使用;
- 2:表示标准错误,2>表示错误重定向;
- 1:表示标准输出,所以2>&1就表示将标准错误重定向到标准输出;
- &:放在命令结尾,表示后台运行;
所以,整条命令的作用就是:以后台方式运行server服务,并将运行产生的log日志输出到nohup.out文件。此时我们再通过”tail -f nohup.out”命令即可达到实时查看服务日志的效果。
2.通过容器安装
官方提供了两种安装方式,除了上述提到的传统安装方式,也提供了docker一键部署。不过我之前使用docker部署后,在使用时会报错,当时还在GitHub上提了issue,不知道目前解决了没有。以下部署方式仅供参考:
1)拉取镜像
docker image pull joinsunsoft/docker.ui
2)创建容器
docker run --restart always --name docker.ui -d -v /home/docker_data/docker.ui/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui
3.浏览器访问
安装完成并启动成功后,即可通过 http://ip:8999 进行访问,例如 http://192.168.1.122:8999
默认账号密码:ginghan 123456,登录后首页如下:
它会自动识别当前主机下的所有镜像、数据卷、容器等,无需做任何配置,同时也能够监控当前系统资源使用情况。
四、快捷操作
本次主要演示两个实例,一个是从私有化仓库拉取指定镜像(和前面的harbor私有化仓库串联起来),一个是基于这个镜像创建容器。
1.搜索/拉取镜像
1)从官方仓库拉取
拉取镜像有两种方式,一种是从docker官方仓库直接拉取,一种是从自己配置的自定义仓库拉取。从官方仓库的方式不必多说,直接搜索,然后从搜索结果拉取即可。
2)从私有化仓库拉取
① 添加私有化仓库
本次重点介绍如何从本地仓库进行拉取。在拉取本地镜像前,需要将harbor和docker.ui中的仓库进行关联。我们前面搭建的harbor私有化仓库如下:
此时就可以在docker.ui中先添加:
注意仓库地址一定要具体到harbor中的项目名称,如果harbor中有多个项目:harbor、jenkins、mysql,则需要在docker.ui中添加多个仓库,分别取名为:harbor、jenkins、mysql,地址则分别对应填写为:
② 拉取镜像
- 名称选择新添加的私有化仓库harbor(对应harbor中的项目)
- 镜像选择仓库中的镜像(对应harbor中这个项目下的镜像)
- TAG为仓库中对应标签(这个镜像的标签)
- 用户名密码为登录harbor的用户名和密码(与harbor管理后台一致)
2.创建容器
① 创建容器
IMAGE是自动填充的,我设置的比较简单,就设置了一个名字、重启策略、主机名,注意容器名字不能和系统现有容器名称重复:
端口号一定要设置,例如Jenkins的8080端口,为了避免和系统现在用的8080端口冲突,我把它映射到了本机的8099端口:
注意事项:创建过程中如有部分字段填写错误,创建即使报错可能也会创建成功,但界面还停留在创建界面。所以如果遇到提交时名称重复的话,很可能是和已创建的容器名称重复了,需要将第一次创建的容器删除后再次创建。
创建完成后,即可看到新创建的名为docker_jenkins的容器:
② 启动容器
直接点击该容器的启动按钮即可
③ 前台访问
http://192.168.1.122:8099/ 访问成功
3.其他操作快照
镜像列表
构建镜像
导入/导出镜像
推送镜像
执行镜像
小结
docker.ui这款可视化工具为界面化操作docker带来了极大便捷,但也并不是完全傻瓜式就可以操作,还是需要一定的docker知识基础才能熟练运用。