百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

docker从入门到实战系列8-docker可视化管理工具DockerUI

toyiye 2024-06-21 11:55 10 浏览 0 评论

前言

在前面的文章中,已经介绍了docker环境搭建、docker常用操作命令、docker使用技巧、docker一键快速搭建环境、dockerfile构建自定义镜像、docker-compose容器编排。但在实际使用过程中,可能会存在部分操作命令记不清、或是批量处理镜像及容器等需求。如果能在不需要命令行键入命令的情况下,通过页面傻瓜式操作就可以实现容器及镜像的管理,那将带来极大地便捷性。

当前市面上有很多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的管理命令和维护命令。

官网:https://github.com/gohutool/docker.ui

二、特征

  • 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压缩包并解压缩

https://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,地址则分别对应填写为:

  • http://192.168.1.122:8088/harbor
  • http://192.168.1.122:8088/jenkins
  • http://192.168.1.122:8088/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知识基础才能熟练运用。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码