基于docker的跨主機WEB容器管理

前言

由于我們的一部分服務(wù)器达舒,分布在不同的公共網(wǎng)絡(luò)環(huán)境。而且腻贰,這些服務(wù)器程序吁恍,發(fā)布都使用了docker,但并沒有使用k8s這樣的工具。處于離散的管理狀態(tài)冀瓦。 也考慮過rancher這樣的工具伴奥,但對于我們來說還是太重了。我需要一個更輕量的管理工具翼闽。因此docker-manager和docker-agent就誕生了拾徙。

結(jié)構(gòu)圖

相關(guān)項目

前端項目: https://github.com/xiaojun207/docker-manager-page

Docker-agent: https://github.com/xiaojun207/docker-agent

功能簡述

基于docker的多主機容器web管理,數(shù)據(jù)默認存儲為sqlit3肄程,也就是說锣吼,docker-manger啟動可以不依賴其他組件。

總覽蓝厌,包括:服務(wù)器數(shù)量玄叠、運行容器數(shù)量、容器總數(shù)量拓提、應(yīng)用數(shù)量读恃、下發(fā)任務(wù)數(shù)量、實時日志開啟數(shù)量

所有容器展示代态,包括:容器名稱寺惫,id、所在服務(wù)器蹦疑、使用鏡像西雀、端口、創(chuàng)建時間

啟動容器歉摧、刪除容器艇肴、重新啟動

容器狀態(tài)信息,包括:cpu使用叁温、內(nèi)存使用再悼、網(wǎng)絡(luò)使用

發(fā)布新的容器到目標服務(wù)器

容器實時日志(如果有的話),相當(dāng)于docker logs -f --tail 10 容器名膝但,比較耗資源冲九,僅臨時查看日志用比較好(該功能不支持集群部署)

服務(wù)器資產(chǎn)展示,主要包括:容器總數(shù)量跟束、運行容器數(shù)量莺奸、cpu使用、內(nèi)存使用冀宴、docker版本憾筏、docker-agent是否在線(該功能不支持集群部署)

用戶管理,對管理員和docker-agent賬號花鹅、密碼氧腰、狀態(tài)管理

訪問白名單IP設(shè)置

部分界面

快速啟動

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

參數(shù)說明:

參數(shù)????是否必填????默認值說明

driveName????否????sqlite3也可以是mysql,如果是mysql,則dataSourceUrl必須配置

dataSourceUrl????否????/app/data/database.db數(shù)據(jù)庫連接url

古拴,當(dāng)driveName為sqlite3時箩帚,dataSourceUrl默認為:data/database.db(即/app/data/database.db),

當(dāng)driveName為mysql時黄痪,dataSourceUrl則必填紧帕,例如:-e dataSourceUrl='root:password@(dbhost:3306)/dbname?charset=utf8'

useCache????否????false是否啟用本地緩存,單機部署的時候啟用桅打,集群部署請不要啟用

consoleCode????否????false是否啟用控制臺驗證碼是嗜,管理員找回密碼時,請設(shè)置consoleCode=true

也可以進入到容器內(nèi)部挺尾,利用配置文件/app/config.yml鹅搪。

配置參數(shù)優(yōu)先級:

[代碼] < [配置文件(./config.yml)] < [命令行參數(shù) (或 docker -e)]

登錄賬號

初次啟動,程序會自動創(chuàng)建管理員賬號(admin)遭铺、客戶端賬號(agent)丽柿,用戶名密碼,會打印到日志輸出中魂挂。(僅顯示一次甫题,請做好備份) - admin - agent

數(shù)據(jù)存儲(可選)

數(shù)據(jù)默認存儲為內(nèi)嵌sqlit3,也就是說涂召,docker-manger啟動可以不依賴其他組件坠非,也可以是mysql。

配置好數(shù)據(jù)庫連接參數(shù)果正,數(shù)據(jù)庫表會自動創(chuàng)建和更新炎码。

配置參數(shù): 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兩個版本上都運行正常

Nginx代理設(shè)置

需特別注意websocket相關(guān)內(nèi)容

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[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使用說明

特別說明: 每臺服務(wù)器(docker-agent的宿主機)的hostname轮锥,必須唯一


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市要尔,隨后出現(xiàn)的幾起案子舍杜,更是在濱河造成了極大的恐慌,老刑警劉巖赵辕,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件既绩,死亡現(xiàn)場離奇詭異,居然都是意外死亡还惠,警方通過查閱死者的電腦和手機饲握,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人救欧,你說我怎么就攤上這事衰粹。” “怎么了笆怠?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵铝耻,是天一觀的道長。 經(jīng)常有香客問我蹬刷,道長瓢捉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任办成,我火速辦了婚禮泡态,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诈火。我一直安慰自己兽赁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布冷守。 她就那樣靜靜地躺著刀崖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拍摇。 梳的紋絲不亂的頭發(fā)上亮钦,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音充活,去河邊找鬼蜂莉。 笑死,一個胖子當(dāng)著我的面吹牛混卵,可吹牛的內(nèi)容都是我干的映穗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幕随,長吁一口氣:“原來是場噩夢啊……” “哼蚁滋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赘淮,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辕录,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梢卸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體走诞,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年蛤高,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚣旱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碑幅。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姻锁,靈堂內(nèi)的尸體忽然破棺而出枕赵,到底是詐尸還是另有隱情,我是刑警寧澤位隶,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布拷窜,位于F島的核電站,受9級特大地震影響涧黄,放射性物質(zhì)發(fā)生泄漏篮昧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一笋妥、第九天 我趴在偏房一處隱蔽的房頂上張望懊昨。 院中可真熱鬧,春花似錦春宣、人聲如沸酵颁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏惋。三九已至,卻和暖如春嚷辅,著一層夾襖步出監(jiān)牢的瞬間簿姨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工簸搞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扁位,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓趁俊,卻偏偏與公主長得像域仇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寺擂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容