真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

docker容器健康檢查怎么實(shí)現(xiàn)

本篇內(nèi)容介紹了“docker容器健康檢查怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到和平網(wǎng)站設(shè)計(jì)與和平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋和平地區(qū)。

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

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

版本要求

docker官方文檔說(shuō)明,HEALTHCHECK功能從1.12版本開(kāi)始提供,這里對(duì)docker社區(qū)版的版本號(hào)做個(gè)簡(jiǎn)介:

  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ā)布的,從此開(kāi)始了"YY.MM"格式的版本命名;

  4. 今天實(shí)戰(zhàn)的docker環(huán)境是19.03.2版本;

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

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

  2. Docker:19.03.2

開(kāi)始體驗(yàn)

  1. 在控制臺(tái)輸入以下命令,即可創(chuàng)建一個(gè)帶有健康檢查信息的容器:

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
  1. 上述命令中帶有四個(gè)和健康檢查相關(guān)的參數(shù),這里解釋一下:

參數(shù)名作用
health-cmd指定命令在容器內(nèi)執(zhí)行,用于檢查容器健康狀態(tài)
health-interval每次健康檢查的間隔時(shí)間,默認(rèn)30秒
health-retries假設(shè)該值為3,表示若連續(xù)三次檢測(cè)的返回結(jié)果都是不健康,就判定該容器不健康,默認(rèn)值為3
health-timeout超時(shí)時(shí)間,默認(rèn)30秒
  1. 關(guān)于health-cmd參數(shù),最常用的是shell命令,例如本例中就是curl --silent --fail localhost:8080/getstate || exit 1,意思是向容器的8080端口發(fā)起http請(qǐng)求,如果http響應(yīng)的code為200,整個(gè)shell的返回值就是0,此時(shí)被docker判定為容器健康,如果http響應(yīng)code不是200,shell的返回值就是1,此時(shí)被docker判定為容器不健康;

  2. 再打開(kāi)一個(gè)控制臺(tái)窗口,執(zhí)行docker ps查看容器狀態(tài),注意STATUS字段,可見(jiàn)剛創(chuàng)建容器的時(shí)候是health: starting狀態(tài),稍后會(huì)變?yōu)?font color="red">healthy狀態(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
  1. 本次實(shí)戰(zhàn)的鏡像提供了http接口localhost:8080/getstate,用于返回容器狀態(tài),每次被調(diào)用都會(huì)在控制臺(tái)打印一行信息,容器日志如下:

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

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

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

  1. 在前面的操作中我們知道,只要容器的http接口localhost:8080/getstate的返回碼是200,容器就被判定為健康;

  2. 想看看不健康狀態(tài)的樣子,只要http接口localhost:8080/getstate的返回碼不是200就行了;

  3. 此鏡像提供了另一個(gè)接口來(lái)方便觀察不健康狀態(tài),假設(shè)宿主機(jī)的IP地址是102.168.0.3,在瀏覽器輸入192.168.0.3:8080/setstate?state=false,該接口調(diào)用完畢后,localhost:8080/getstate的返回碼就從200變成了403;

  4. 再去看容器的控制臺(tái)信息,這次內(nèi)容有變化了,從step probe return success變成了step probe return fail,此時(shí)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
  1. 前面在創(chuàng)建容器時(shí)的health-retries參數(shù)的值是10,意味著localhost:8080/getstate連續(xù)10次返回碼非200才會(huì)被判定為不健康,因此,在控制臺(tái)連續(xù)十次輸出step probe return fail之前,執(zhí)行docker ps命令觀察容器狀態(tài),應(yīng)該還是healthy,超過(guò)十次step probe return fail輸出之后,再去看容器狀態(tài),就變成了healthy

(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
  1. 恢復(fù)健康狀態(tài):在瀏覽器輸入192.168.0.3:8080/setstate?state=true,這樣localhost:8080/getstate接口的返回碼又變成了200,觀察控制臺(tái),只要"step probe return success"輸出一次,容器健康狀態(tài)就恢復(fù)為healthy了;

觀察容器事件

  1. 在控制臺(tái)輸入docker events --filter event=health_status,即可觀察宿主機(jī)上所有的容器健康狀態(tài)事件;

  2. 按照上面的操作,在瀏覽器輸入192.168.0.3:8080/setstate?state=true或者192.168.0.3:8080/setstate?state=false,將容器的健康狀態(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容器健康檢查怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


本文標(biāo)題:docker容器健康檢查怎么實(shí)現(xiàn)
網(wǎng)頁(yè)地址:http://weahome.cn/article/iggoci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部