基于docker的跨主机WEB容器管理
connygpt 2024-12-27 16:03 3 浏览
前言
由于我们的一部分服务器,分布在不同的公共网络环境。而且,这些服务器程序,发布都使用了docker,但并没有使用k8s这样的工具。处于离散的管理状态。
也考虑过rancher这样的工具,但对于我们来说还是太重了。我需要一个更轻量的管理工具。因此docker-manager和docker-agent就诞生了。
结构图
相关项目
前端项目: https://github.com/xiaojun207/docker-manager-page
Docker-agent: https://github.com/xiaojun207/docker-agent
功能简述
基于docker的多主机容器web管理,数据默认存储为sqlit3,也就是说,docker-manger启动可以不依赖其他组件。
- 总览,包括:服务器数量、运行容器数量、容器总数量、应用数量、下发任务数量、实时日志开启数量
- 所有容器展示,包括:容器名称,id、所在服务器、使用镜像、端口、创建时间
- 启动容器、删除容器、重新启动
- 容器状态信息,包括:cpu使用、内存使用、网络使用
- 发布新的容器到目标服务器
- 容器实时日志(如果有的话),相当于docker logs -f --tail 10 容器名,比较耗资源,仅临时查看日志用比较好(该功能不支持集群部署)
- 服务器资产展示,主要包括:容器总数量、运行容器数量、cpu使用、内存使用、docker版本、docker-agent是否在线(该功能不支持集群部署)
- 用户管理,对管理员和docker-agent账号、密码、状态管理
- 访问白名单IP设置
部分界面
快速启动
docker pull xiaojun207/docker-manager:latest
docker ps -aq --filter "name=docker-manager" | grep -q . && docker stop docker-manager && docker rm -fv docker-manager
docker run -d --name docker-manager -p 8068:8068 -v /app/docker-manager/data:/app/data xiaojun207/docker-manager:latest
或者
docker run -d --name docker-manager -p 8068:8068 -e driveName=mysql -e dataSourceUrl='root:password@(dbhost:3306)/dbname?charset=utf8' xiaojun207/docker-manager:latest
参数说明:
参数 | 是否必填 | 默认值 | 说明 |
driveName | 否 | sqlite3 | 也可以是mysql,如果是mysql,则dataSourceUrl必须配置 |
dataSourceUrl | 否 | /app/data/database.db | 数据库连接url |
useCache | 否 | false | 是否启用本地缓存,单机部署的时候启用,集群部署请不要启用 |
consoleCode | 否 | false | 是否启用控制台验证码,管理员找回密码时,请设置consoleCode=true |
也可以进入到容器内部,利用配置文件/app/config.yml。
配置参数优先级:
[代码] < [配置文件(./config.yml)] < [命令行参数 (或 docker -e)]
此时,在浏览器中即可访问:http://<docker-manager所在IP地址>:8068/ ,登录账号请看下面的内容
登录账号
初次启动,程序会自动创建管理员账号(admin)、客户端账号(agent),用户名密码,会打印到日志输出中。(仅显示一次,请做好备份)
- admin
- agent
数据存储(可选)
- 数据默认存储为内嵌sqlit3,也就是说,docker-manger启动可以不依赖其他组件,也可以是mysql。
- 配置好数据库连接参数,数据库表会自动创建和更新。
- 配置参数: driveName、dataSourceUrl
sqlite3时 ( 默认配置 )
配置sqlite3的如下
-e driveName=sqlit3 -e dataSourceUrl='/app/data/database.db'
如何配置数据到mysql
配置mysql的如下
-e driveName=mysql -e dataSourceUrl='root:password@(dbhost:3306)/dbname?charset=utf8'
目前来说,在mysql5.6.44和mysql8.0两个版本上都运行正常
docker-manger的Nginx代理设置
需特别注意websocket相关内容
eg.:
real_ip_header X-Forwarded-For;
real_ip_recursive on;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $http_x_forwarded_for $ClientRealIP {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}
server {
listen 80;
server_name dockermanager.com;
client_max_body_size 1000m;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $ClientRealIP;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # websocket相关内容
proxy_set_header Connection $connection_upgrade; # websocket相关内容
proxy_pass http://dockermgr_api;
}
}
客户端(docker-agent)
docker pull xiaojun207/docker-agent:latest
docker run -d --name docker-agent -v /var/run/docker.sock:/var/run/docker.sock -e DockerServer="http://192.168.1.200:8068/dockerMgrApi/agent" -e Username="agent" -e Password="12345678" -e HostIp="192.168.1.6" xiaojun207/docker-agent:latest
需配合xiaojun207/docker-agent镜像使用,docker-agent的具体使用方法,请参见其docker-agent使用说明
特别说明:
每台服务器(docker-agent的宿主机)的hostname,必须唯一
联系邮箱
如果,你有什么想法或建议,请你发送邮件到下面的邮箱:
email: xiaojun207@126.com
相关推荐
- vue3 组件初始化流程
-
学习完成响应式系统后,咋们来看看vue3组件的初始化流程既然是看vue组件的初始化流程,咋们先来创建基本的代码,跑跑流程(在app.vue中写入以下内容,来跑流程)import{h,ref}...
- Context的典型使用场景
-
获取应用文件路径基类Context提供了获取应用文件路径的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionCon...
- web技术分享|AudioContext 实现音频可视化
-
要实现音频可视化,实现一些炫酷的效果需要借助WebAudioAPI提供的一些方法AudioContext。AudioContext接口表示由链接在一起的音频模块构建的音频处理图,每个模块由一个...
- 2023-03-21:音视频解混合(demuxer)为MP3和H264,用go语言编写
-
2023-03-21:音视频解混合(demuxer)为MP3和H264,用go语言编写。答案2023-03-21:#步骤1:安装github.com/moonfdd/ffmpeg-gogoget...
- 如何在微信小程序中加入音频或视频?
-
要在微信小程序中加入音频或视频,可以使用以下步骤:1.在小程序页面中引入wx.createInnerAudioContext()或wx.createVideoContext()方法。2.创建音频或...
- 使用RKE的方式快速部署K8S集群
-
RKE是一款经过CNCF认证的开源Kubernetes发行版,可以在Docker容器内运行。它通过删除大部分主机依赖项,并为部署、升级和回滚、节点扩容提供一个稳定的路径,从而解决了Kubernetes...
- Rancher(k8s)的持久存储卷Volumes(PV/PVC)的使用方法
-
1.介绍1.1介绍在上一节课里面福哥带着大家学会了使用k8s的负载均衡LoadBalancing(LB)发布集群内部的服务的方法,今天我们要讲讲k8s的持久存储卷Volumes(PVC)的使用方...
- 基于 Sealos 的镜像构建能力,快速部署自定义 k8s 集群
-
Sealos是一个快速构建高可用k8s集群的命令行工具,该工具部署时会在第一个k8smaster节点部署registry服务(sealos.hub),该域名通过hosts解析到第一...
- Docker、Containerd、RunC分别是什么
-
什么是RunC上一遍文章《真正运行容器的工具:深入了解runc和OCI规范》已经讲清楚了Runc与OCI。这里再讲解一下概念。Docker、Google、CoreOS和其他供应商创建了开放容...
- 偷偷爆料下Docker学习,看这一篇就够了!十分推荐!!
-
一.什么是容器?生活中常将一个能用来承载物料的装置称之为容器,比如碗、盘子,杯子等,容器内可放入各种各样的物料,每一个容器都相互独立,不相互干扰。而我们计算机领域所说的容器通常是指一个包含了完整的运...
- Docker网络优化方案,你认为哪种将引爆未来?
-
ICT架构师技术交流微信号分析和交流ICT行业最前沿技术,分享更多存储、服务器、数据中心、网络、软件定义和虚拟化等相关知识,旨在知识交流、开放共享和共同进步。上一篇文章Docker原生网络和实现原...
- Docker容器和存储系统 云舒网络
-
江松:1986开始接触到苹果电脑,不是MacBook,是APPLEII.用Basic编程序。1999年去欧洲爱尔兰做存储,从并行SCSI协议开始做,到FC1G,4G,8G。2009年回国后进...
- 基于docker的跨主机WEB容器管理
-
前言由于我们的一部分服务器,分布在不同的公共网络环境。而且,这些服务器程序,发布都使用了docker,但并没有使用k8s这样的工具。处于离散的管理状态。也考虑过rancher这样的工具,但对于我们来说...
- Kubernetes(k8s)docker 和 Containerd 区别
-
Kubernetes(k8s)、Docker和Containerd都是容器技术领域的重要工具,但它们各自有不同的角色和功能。Docker:Docker是一个开源的容器化平台,它允许开发者将应...
- 从 Docker 快刀到 K8s 剑法:程序员的云原生武功秘籍
-
前言在当今云计算的浪潮中,Docker和Kubernetes(K8s)已成为每位程序员必备的核心工具。Docker,如同一把锐利的快刀,能够迅速、简洁地将应用及其依赖封装成镜像,实现便捷的打包与发...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)