dockerfile健康檢查HEALTHCHECK的命令學習
HEALTHCHECK 指令告訴 Docker 如何測試一個容器,以檢查它是否仍在工作,本文主要介紹了dockerfile健康檢查HEALTHCHECK的命令學習,感興趣的可以了解一下
語法形式:
HEALTHCHECK [OPTIONS] CMD command (通過在容器中運行一個命令執(zhí)行健康檢查)HEALTHCHECK NONE (禁用從基本鏡像繼承的任何健康檢查)1、dockerfile示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FROM registry.access.redhat.com/ubi9/ubi-init
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
RUN dnf -y install wget tcpdump tzdata bind-utils;dnf clean all;dnf makecache
ADD ./jdk-8u212-linux-x64.tar.gz /usr/local/
ADD ./apache-tomcat-8.0.26.tar.gz /usr/local/
ADD ./node_exporter /usr/bin/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone;ln -sf /usr/local/jdk1.8.0_212/bin/java /usr/bin/java
RUN echo "sh /usr/local/apache-tomcat-8.0.26/bin/startup.sh" >> /etc/profile
WORKDIR /data
ADD ./run_tomcat_exporter.sh /data/run_tomcat_exporter.sh
EXPOSE 9100 8080
ENV JAVA_HOME /usr/local/jdk1.8.0_212
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.26
ENV CATALINA_BASH /usr/local/apache-tomcat-8.0.26
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ENV girl="serena" EXPORTER_PORT=9100
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl --fail http://localhost:$EXPORTER_PORT || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)'
CMD sh /data/run_tomcat_exporter.sh
注:這個示例中跑了 exporter 9100 和tomcat 8080。使用腳本/data/run_tomcat_exporter.sh 一次性啟動這兩個應用。
2、啟動腳本
1
2
3
4
5
#!/usr/bin/env bash
sh /usr/local/apache-tomcat-8.0.26/bin/startup.sh
/usr/bin/node_exporter
sleep 36000000
3、構(gòu)建鏡像
1
docker build -t myubi:1.0 .
4、運行容器
1
docker run -d --restart=always --name=myubi -p 19100:9100 -p 18080:8080 myubi:1.0
注:可使用宿主機訪問容器應用,如http://宿主機ip:18080/ 和 http://宿主機ip:19100/metrics
5、進容器內(nèi)部嘗試kill掉健康檢查的exporter進程
1
2
3
4
5
6
7
8
9
10
11
12
[root@k8s-node2 ubi]
sh-5.1
sh-5.1
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:58 ? 00:00:00 sh /data/run_tomcat_exporter.sh
root 14 1 7 09:58 ? 00:00:01 /usr/local/jdk1.8.0_212/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.0.26/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.Cla
root 15 1 0 09:58 ? 00:00:00 /usr/bin/node_exporter
root 67 0 0 09:58 pts/0 00:00:00 sh
root 82 67 0 09:58 pts/0 00:00:00 ps -ef
sh-5.1
sh-5.1
sh-5.1
6、小結(jié)
6-1、健康檢查中使用exit 1只能讓容器的狀態(tài)為 unhealthy
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl --fail http://localhost:$EXPORTER_PORT || exit 1
6-2、健康檢查中使用bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)' 能讓容器重啟
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl --fail http://localhost:$EXPORTER_PORT || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)'
因為kill -s 9 -1 就是殺掉容器的主進程1。如果主進程1不存在了,那么容器也就掛了。
配合運行容器的命令--restart=always 則容器檢測到主進程1不存在了就回重啟容器。
到此這篇關(guān)于dockerfile健康檢查HEALTHCHECK的命令學習的文章就介紹到這了,更多相關(guān)dockerfile健康檢查HEALTHCHECK內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
原文鏈接:https://laoxiao.blog.csdn.net/article/details/131954192
本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。
如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請將相關(guān)資料發(fā)送至 reterry123@163.com 進行投訴反饋,一經(jīng)查實,立即處理!
相關(guān)知識
使用 docker 部署 AspNetCore 應用:使用alpine鏡像并加入健康檢查和瘦身
健康檢查 檢測java假死
Docker鏡像瘦身技巧的新思路(基于chiselled Ubuntu)本文介紹一種docker image瘦身的技巧
ASP.NET Core 中的健康狀態(tài)檢查
Docker安全性:最佳實踐和常見安全考慮
211健康檢查計劃提供積極的心理健康支持
k8s健康檢查 spring k8s健康檢查探針多個地址
檢查 Windows 磁盤健康狀態(tài)
如何為托管到SAE的應用配置健康檢查
男科健康檢查讓女醫(yī)生檢查,你愿意嗎?
網(wǎng)址: dockerfile健康檢查HEALTHCHECK的命令學習 http://m.u1s5d6.cn/newsview905355.html
推薦資訊
- 1發(fā)朋友圈對老公徹底失望的心情 12775
- 2BMI體重指數(shù)計算公式是什么 11235
- 3補腎吃什么 補腎最佳食物推薦 11199
- 4性生活姿勢有哪些 盤點夫妻性 10425
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7826