最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

語法形式:

  • HEALTHCHECK [OPTIONS] CMD command (通過在容器中運(yùn)行一個命令執(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),它會自動解壓
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è)置時區(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   #即使探測到端口是unhealthy也不會重啟容器,僅在docker ps里標(biāo)記這個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

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

2、啟動腳本

#!/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# 此時容器自動退出重啟了

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 就是殺掉容器的主進(jìn)程1。如果主進(jìn)程1不存在了,那么容器也就掛了。

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

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

相關(guān)文章

  • docker centos7 安裝ssh具體步驟

    docker centos7 安裝ssh具體步驟

    這篇文章主要介紹了 docker centos7 安裝ssh相關(guān)資料,這里提供了詳細(xì)的具體安裝步驟,需要的朋友可以參考下
    2016-11-11
  • 在Ubuntu 16.04安裝與使用Docker的教程詳解

    在Ubuntu 16.04安裝與使用Docker的教程詳解

    Docker是一個應(yīng)用程序,它使得在容器中運(yùn)行應(yīng)用程序進(jìn)程變得簡單和容易,這類應(yīng)用程序就像虛擬機(jī),只有更便攜,更加資源友好,更依賴于主機(jī)操作系統(tǒng)。這篇文章主要介紹了在Ubuntu 16.04安裝與使用Docker的教程
    2017-01-01
  • 使用docker-tc對host容器進(jìn)行限流的操作方法

    使用docker-tc對host容器進(jìn)行限流的操作方法

    docker-tc是一個github開源項目,這篇文章主要介紹了使用docker-tc對host容器進(jìn)行限流,需要的朋友可以參考下
    2024-04-04
  • 詳解Docker-compose networks 的例子

    詳解Docker-compose networks 的例子

    這篇文章主要介紹了詳解Docker-compose networks 的例子,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 遷移docker數(shù)據(jù)目錄,釋放硬盤數(shù)據(jù)過程

    遷移docker數(shù)據(jù)目錄,釋放硬盤數(shù)據(jù)過程

    這篇文章主要介紹了遷移docker數(shù)據(jù)目錄,釋放硬盤數(shù)據(jù)過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-05-05
  • 在Kubernetes環(huán)境下使用Docker實現(xiàn)GPU支持的完整方案

    在Kubernetes環(huán)境下使用Docker實現(xiàn)GPU支持的完整方案

    本文將介紹如何在?Kubernetes?環(huán)境下,使用?Docker?容器運(yùn)行時實現(xiàn)?NVIDIA?GPU?加速支持,包括環(huán)境準(zhǔn)備、安裝?nvidia-docker2、K8s?device?plugin?配置等內(nèi)容,需要的朋友可以參考下
    2025-05-05
  • Docker部署MongoDb的詳細(xì)過程記錄

    Docker部署MongoDb的詳細(xì)過程記錄

    這篇文章主要介紹了如何使用Docker?Compose啟動MongoDB副本集,包括配置文件編寫、容器啟動命令、副本集初始化、角色和用戶創(chuàng)建等步驟,需要的朋友可以參考下
    2024-12-12
  • docker-compose使用volumes注意項介紹

    docker-compose使用volumes注意項介紹

    這篇文章主要介紹了docker-compose使用volumes注意項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 使用Docker部署WikiDocs文檔管理工具詳解

    使用Docker部署WikiDocs文檔管理工具詳解

    這篇文章介紹了WikiDocs這款開源Markdown靜態(tài)文件Wiki引擎,以及如何在本地通過Docker環(huán)境進(jìn)行部署、初始化和基本使用
    2025-12-12
  • Docker Compose容器編排深度解析與實戰(zhàn)小結(jié)

    Docker Compose容器編排深度解析與實戰(zhàn)小結(jié)

    Docker Compose 是 Docker 官方推出的開源項目,用于定義和運(yùn)行多個 Docker 容器的應(yīng)用工具,簡化了多容器應(yīng)用的部署和管理,本文介紹Docker Compose:容器編排深度解析與實戰(zhàn)指南,感興趣的朋友一起看看吧
    2025-12-12

最新評論

三明市| 军事| 措勤县| 北海市| 水城县| 霍州市| 大石桥市| 孟津县| 贵州省| 白山市| 滁州市| 仁布县| 泰来县| 奎屯市| 浙江省| 蓝山县| 宣威市| 克什克腾旗| 济宁市| 桂林市| 杭州市| 吉隆县| 砀山县| 乌恰县| 遂川县| 峡江县| 九寨沟县| 大竹县| 琼中| 卓资县| 开平市| 凤凰县| 疏勒县| 青冈县| 湖南省| 昆明市| 娄底市| 青海省| 武陟县| 九龙县| 正宁县|