欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

dockerfile健康檢查HEALTHCHECK的命令學(xué)習(xí)

 更新時(shí)間:2024年01月04日 15:59:45   作者:瀟灑哥Kahn  
HEALTHCHECK 指令告訴 Docker 如何測(cè)試一個(gè)容器,以檢查它是否仍在工作,本文主要介紹了dockerfile健康檢查HEALTHCHECK的命令學(xué)習(xí),感興趣的可以了解一下

語(yǔ)法形式:

  • HEALTHCHECK [OPTIONS] CMD command (通過在容器中運(yùn)行一個(gè)命令執(zhí)行健康檢查)
  • HEALTHCHECK NONE (禁用從基本鏡像繼承的任何健康檢查)

1、dockerfile示例

FROM registry.access.redhat.com/ubi9/ubi-init
#關(guān)閉訂閱管理器功能,便于使用dnf安裝軟件RUN sed -i 's/d=1/d=0/' /etc/yum/pluginconf.d/subscription-manager.conf
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
#將本地jdk壓縮包上傳至鏡像內(nèi),它會(huì)自動(dòng)解壓
ADD ./jdk-8u212-linux-x64.tar.gz /usr/local/
ADD ./apache-tomcat-8.0.26.tar.gz /usr/local/
ADD ./node_exporter /usr/bin/
#設(shè)置時(shí)區(qū)和jdk的軟鏈
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 || exit 1   #即使探測(cè)到端口是unhealthy也不會(huì)重啟容器,僅在docker ps里標(biāo)記這個(gè)docker進(jìn)程為unhealthy
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)'
#運(yùn)行exporter
CMD sh /data/run_tomcat_exporter.sh

注:這個(gè)示例中跑了 exporter 9100 和tomcat 8080。使用腳本/data/run_tomcat_exporter.sh 一次性啟動(dòng)這兩個(gè)應(yīng)用。

2、啟動(dòng)腳本

#!/usr/bin/env bash

sh /usr/local/apache-tomcat-8.0.26/bin/startup.sh
/usr/bin/node_exporter
sleep 36000000

3、構(gòu)建鏡像

docker build -t myubi:1.0 .

4、運(yùn)行容器

docker run -d --restart=always --name=myubi -p 19100:9100 -p 18080:8080 myubi:1.0

 注:可使用宿主機(jī)訪問容器應(yīng)用,如http://宿主機(jī)ip:18080/ 和 http://宿主機(jī)ip:19100/metrics

5、進(jìn)容器內(nèi)部嘗試kill掉健康檢查的exporter進(jìn)程

[root@k8s-node2 ubi]# docker exec -it myubi sh
sh-5.1# 
sh-5.1# ps -ef
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# kill -9 15
sh-5.1# 此時(shí)容器自動(dòng)退出重啟了

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)'

因?yàn)閗ill -s 9 -1 就是殺掉容器的主進(jìn)程1。如果主進(jìn)程1不存在了,那么容器也就掛了。

配合運(yùn)行容器的命令--restart=always 則容器檢測(cè)到主進(jìn)程1不存在了就回重啟容器。

到此這篇關(guān)于dockerfile健康檢查HEALTHCHECK的命令學(xué)習(xí)的文章就介紹到這了,更多相關(guān)dockerfile健康檢查HEALTHCHECK內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker容器數(shù)據(jù)卷的使用教程

    Docker容器數(shù)據(jù)卷的使用教程

    數(shù)據(jù)卷容器是一個(gè)專門用來(lái)掛載數(shù)據(jù)卷的容器,該容器主要是供其他容器引用和使用,下面這篇文章主要給大家介紹了關(guān)于Docker容器數(shù)據(jù)卷使用的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Docker 運(yùn)行時(shí)的用戶與組管理的方法

    Docker 運(yùn)行時(shí)的用戶與組管理的方法

    這篇文章主要介紹了Docker 運(yùn)行時(shí)的用戶與組管理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-10-10
  • Docker 常用命令整理(實(shí)用篇)

    Docker 常用命令整理(實(shí)用篇)

    這篇文章主要介紹了Docker 常用命令整理,需要的朋友可以參考下
    2017-02-02
  • Docker?compose一鍵安裝mirai搭建QQ機(jī)器人最快操作方法

    Docker?compose一鍵安裝mirai搭建QQ機(jī)器人最快操作方法

    這篇文章主要介紹了Docker?compose一鍵安裝mirai,搭建QQ機(jī)器人最快方法,詳細(xì)介紹了mirai基本操作,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 查詢Docker鏡像DockerFile的方法步驟

    查詢Docker鏡像DockerFile的方法步驟

    本文主要介紹了查詢Docker鏡像DockerFile的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Docker Nginx Log 三者的處理詳解

    Docker Nginx Log 三者的處理詳解

    這篇文章主要介紹了Docker Nginx Log 三者的處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-11-11
  • Docker實(shí)現(xiàn)掛載的方式匯總

    Docker實(shí)現(xiàn)掛載的方式匯總

    Docker實(shí)現(xiàn)掛載有多種方式,下面給大家分享Docker實(shí)現(xiàn)掛載常見方式,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 在Docker中的ubuntu中安裝Python3和Pip的問題

    在Docker中的ubuntu中安裝Python3和Pip的問題

    這篇文章主要介紹了在Docker中的ubuntu中安裝Python3和Pip的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 聊聊Docker不適合跑?MySQL?的N個(gè)原因

    聊聊Docker不適合跑?MySQL?的N個(gè)原因

    容器是為了解決“在切換運(yùn)行環(huán)境時(shí),如何保證軟件能夠正常運(yùn)行”這一問題,這篇文章主要介紹了Docker?為什么不適合跑?MySQL?有N個(gè)原因,需要的朋友可以參考下
    2022-12-12
  • Docker mysql+nacos單機(jī)部署的實(shí)現(xiàn)步驟

    Docker mysql+nacos單機(jī)部署的實(shí)現(xiàn)步驟

    本文主要介紹了Docker mysql+nacos單機(jī)部署的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評(píng)論