日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文目是體驗Docker容器的健康檢查功能,以體驗為主不涉及開發(fā),與開發(fā)相關(guān)的內(nèi)容會在后面的文章細(xì)說。

關(guān)于容器健康檢查

考慮這樣的情況:docker環(huán)境中,springboot應(yīng)用的容器還在,但已無法提供服務(wù)(例如數(shù)據(jù)或文件被破壞,線程池等資源被耗盡等各種異常),此時需要一種方式快速得知這種狀態(tài)。此時容器健康檢查(即HEALTHCHECK)就派上用場了,只要容器按照Docker的規(guī)則提供自身狀態(tài)信息,就可以將容器健康信息以多種方式告知外界;

版本要求

docker官方文檔說明,HEALTHCHECK功能從1.12版本開始提供,這里對docker社區(qū)版的版本號做個簡介:

  1. 1.12版本是2016年07月28日發(fā)布的;
  2. 1.13.1 版本2017年02月08日發(fā)布的,此版本之后,docker的版本命名規(guī)則有了變化,改為"YY.MM"格式;
  3. 17.03.0-ce版本是2017年03月01日發(fā)布的,從此開始了"YY.MM"格式的版本命名;
  4. 今天實戰(zhàn)的docker環(huán)境是19.03.2版本;

實戰(zhàn)環(huán)境信息

  1. 操作系統(tǒng):macOS Catalina 10.15
  2. Docker:19.03.2

開始體驗

  • 在控制臺輸入以下命令,即可創(chuàng)建一個帶有健康檢查信息的容器:
docker run --rm 
--name=healthcheck 
-p 8080:8080 
--health-cmd="curl --silent --fail localhost:8080/getstate || exit 1" 
--health-interval=15s 
--health-retries=10 
--health-timeout=5s 
bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT
  • 上述命令中帶有四個和健康檢查相關(guān)的參數(shù),這里解釋一下:
  • 參數(shù)名 作用 health-cmd 指定命令在容器內(nèi)執(zhí)行,用于檢查容器健康狀態(tài) health-interval 每次健康檢查的間隔時間,默認(rèn)30秒 health-retries 假設(shè)該值為3,表示若連續(xù)三次檢測的返回結(jié)果都是不健康,就判定該容器不健康,默認(rèn)值為3 health-timeout 超時時間,默認(rèn)30秒 關(guān)于health-cmd參數(shù),最常用的是shell命令,例如本例中就是,意思是向容器的8080端口發(fā)起http請求,如果http響應(yīng)的code為200,整個shell的返回值就是0,此時被docker判定為容器健康,如果http響應(yīng)code不是200,shell的返回值就是1,此時被docker判定為容器不健康;
  • 再打開一個控制臺窗口,執(zhí)行查看容器狀態(tài),注意STATUS字段,可見剛創(chuàng)建容器的時候是狀態(tài),稍后會變?yōu)闋顟B(tài):
(base) zhaoqindeMacBook-Pro:~ zhaoqin$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d86c11321cef bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT "JAVA -Xms1g -Xmx1g …" 13 seconds ago Up 12 seconds (health: starting) 8080/tcp healthcheck
(base) zhaoqindeMacBook-Pro:~ zhaoqin$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d86c11321cef bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT "java -Xms1g -Xmx1g …" 17 seconds ago Up 16 seconds (healthy) 8080/tcp healthcheck
  • 本次實戰(zhàn)的鏡像提供了http接口,用于返回容器狀態(tài),每次被調(diào)用都會在控制臺打印一行信息,容器日志如下:
2019-10-20 03:05:02.350 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-10-20 03:05:02.364 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 14 ms
2019-10-20 03:05:02.384 INFO 1 --- [nio-8080-exec-1] c.b.d.DockerhealthcheckApplication : step probe return success
2019-10-20 03:05:17.584 INFO 1 --- [nio-8080-exec-2] c.b.d.DockerhealthcheckApplication : step probe return success
2019-10-20 03:05:32.748 INFO 1 --- [nio-8080-exec-3] c.b.d.DockerhealthcheckApplication : step probe return success

可見容器自啟動后,該接口每隔15秒就會調(diào)用一次;

模擬不健康狀態(tài)

  • 在前面的操作中我們知道,只要容器的http接口的返回碼是200,容器就被判定為健康;
  • 想看看不健康狀態(tài)的樣子,只要http接口的返回碼不是200就行了;
  • 此鏡像提供了另一個接口來方便觀察不健康狀態(tài),假設(shè)宿主機(jī)的IP地址是102.168.0.3,在瀏覽器輸入,該接口調(diào)用完畢后,的返回碼就從200變成了403;
  • 再去看容器的控制臺信息,這次內(nèi)容有變化了,從變成了,此時getstate接口的返回碼是403:
2019-10-20 03:38:51.428 INFO 1 --- [nio-8080-exec-3] c.b.d.DockerhealthcheckApplication : step probe return success
2019-10-20 03:39:06.592 INFO 1 --- [nio-8080-exec-9] c.b.d.DockerhealthcheckApplication : step probe return fail
2019-10-20 03:39:21.757 INFO 1 --- [io-8080-exec-10] c.b.d.DockerhealthcheckApplication : step probe return fail
2019-10-20 03:39:36.912 INFO 1 --- [nio-8080-exec-3] c.b.d.DockerhealthcheckApplication : step probe return fail
  • 前面在創(chuàng)建容器時的health-retries參數(shù)的值是10,意味著連續(xù)10次返回碼非200才會被判定為不健康,因此,在控制臺連續(xù)十次輸出之前,執(zhí)行docker ps命令觀察容器狀態(tài),應(yīng)該還是,超過十次輸出之后,再去看容器狀態(tài),就變成了:
(base) zhaoqindeMacBook-Pro:~ zhaoqin$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
070e56cc99f2 bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT "java -Xms1g -Xmx1g …" 18 minutes ago Up 18 minutes (unhealthy) 0.0.0.0:8080->8080/tcp healthcheck
  • 恢復(fù)健康狀態(tài):在瀏覽器輸入,這樣接口的返回碼又變成了200,觀察控制臺,只要"step probe return success"輸出一次,容器健康狀態(tài)就恢復(fù)為healthy了;

觀察容器事件

  1. 在控制臺輸入,即可觀察宿主機(jī)上所有的容器健康狀態(tài)事件;
  2. 按照上面的操作,在瀏覽器輸入或者,將容器的健康狀態(tài)轉(zhuǎn)變幾次,可以觀察到容器事件變化:
(base) zhaoqindeMacBook-Pro:~ zhaoqin$ docker events --filter event=health_status
2019-10-20T12:19:18.349588676+08:00 container health_status: unhealthy 2d538f8752ae1e94ce23f34b7fb71c8f2ea3a075df82943ffdbe62c49ad4d6c8 (image=bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT, name=healthcheck)
2019-10-20T12:20:19.030857534+08:00 container health_status: healthy 2d538f8752ae1e94ce23f34b7fb71c8f2ea3a075df82943ffdbe62c49ad4d6c8 (image=bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT, name=healthcheck)

至此,docker容器健康體驗完畢,我們已經(jīng)對此功能有了基本認(rèn)識,接下來實戰(zhàn)中,我們會嘗試讓自己的應(yīng)用容器支持健康檢查功能;

分享到:
標(biāo)簽:容器 docker
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定