赞
踩
由于我们的一部分服务器,分布在不同的公共网络环境。而且,这些服务器程序,发布都使用了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启动可以不依赖其他组件。
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 ,当driveName为sqlite3时,dataSourceUrl默认为:data/database.db(即/app/data/database.db), 当driveName为mysql时,dataSourceUrl则必填,例如:-e dataSourceUrl=‘root:password@(dbhost:3306)/dbname?charset=utf8’ |
useCache | 否 | false | 是否启用本地缓存,单机部署的时候启用,集群部署请不要启用 |
consoleCode | 否 | false | 是否启用控制台验证码,管理员找回密码时,请设置consoleCode=true |
也可以进入到容器内部,利用配置文件/app/config.yml。
配置参数优先级:
[代码] < [配置文件(./config.yml)] < [命令行参数 (或 docker -e)]
此时,在浏览器中即可访问:http://<docker-manager所在IP地址>:8068/ ,登录账号请看下面的内容
初次启动,程序会自动创建管理员账号(admin)、客户端账号(agent),用户名密码,会打印到日志输出中。(仅显示一次,请做好备份)
配置sqlite3的如下
-e driveName=sqlit3 -e dataSourceUrl='/app/data/database.db'
配置mysql的如下
-e driveName=mysql -e dataSourceUrl='root:password@(dbhost:3306)/dbname?charset=utf8'
目前来说,在mysql5.6.44和mysql8.0两个版本上都运行正常
需特别注意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 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。