目录

1、介绍

2、实验如下:

2.1  准备NGINX镜像

2.2  mkdir /root/test 用于存放dockerfile文件的目录

2.3  cd /root/test

2.4  编写dockerfile文件,如下所示:

2.5  在dockerfile所在的目录准备test.sh文件

2.6  build构建镜像

3、检查并测试

3.3  进到容器改变index.html的名称

3.4  恢复index.html,查看healthcheck状态是否也恢复


1、介绍

Dockerfile中使用HEALTHCHECK的形式有两种:

                        HEALTHCHECK [options] CMD command(本次详细解释)

HEALTHCHECK NODE 意思是禁止从父镜像继承的HEALTHCHECK生效

下面我们主要介绍第一种形式的应用:

HEALTHCHECK [options] CMD command中的options有三个参数可设定:

  1. interval:间隔(s秒、m分钟、h小时),从容器运行起来开始计时interval秒(或者分钟小时)进行第一次健康检查,随后每间隔interval秒进行一次健康检查;还有一种特例请看timeout解析。
  2. timeout:执行command需要时间,比如curl 一个地址,如果超过timeout秒则认为超时是错误的状态,此时每次健康检查的时间是timeout+interval秒。
  3. retries:连续检查retries次,如果结果都是失败状态,则认为这个容器是unhealth的
  4. 注意:在Dockerfile中只能有一个HEALTHCHECK指令。如果您列出多个,则只有最后一个HEALTHCHECK将生效。

2、实验如下:

2.1  准备NGINX镜像

2.2  mkdir /root/test 用于存放dockerfile文件的目录

2.3  cd /root/test

2.4  编写dockerfile文件,如下所示:

[root@node03 test]# cat dockerfile

FROM    nginx:latest

RUN     echo "123456" > /root/test

COPY    test.sh /root/test.sh

HEALTHCHECK --interval=2s --timeout=3s --retries=3 CMD /bin/bash /root/test.sh

[root@node03 test]#

  • --interval=2s 间隔2s进行第一次健康检查
  • --timeout=3s 执行command需要的时间,超过3s则认为是错误的
  • --retries=3 检查的次数

2.5  在dockerfile所在的目录准备test.sh文件

[root@node03 test]# cat test.sh

#!/bin/bash

cd /usr/share/nginx/html

cat index.html 2>/dev/null 1>/dev/null

if [ $? -eq 0 ];then

exit 0

else

exit 1

fi

[root@node03 test]#

2表示错误重定向到/dev/null

1表示输出重定向到/dev/null

2.6  build构建镜像

[root@node03 test]# docker build -t nginx_health:latest .

3、检查并测试

3.1  查看构建的镜像

3.2  创建容器测试

[root@node03 test]# docker run -d --name 12 nginx_health

f74956d25a8e81b95382bc1e671781d2a3738c794df1a7a120b9abfa2107b407

[root@node03 ~]# docker ps

CONTAINER ID        IMAGE   COMMAND    CREATED   STATUS     PORTS               NAMES

f74956d25a8e  nginx_health   "tail -F /qq"   5 seconds ago  Up 4 seconds (healthy)   80/tcp   12

b2fc06408077  nginx    "nginx -g 'daemon of…"   About an hour ago   Up About an hour 80/tcp 11

a9f954712172   centos              "tail -F /qq/"           5 hours ago         Up 5 hours  test01

[root@node03 ~]#

【由上可知,状态正常】

3.3  进到容器改变index.html的名称

docker exec -it 12 /bin/bash

【将index.html的名称换成index.html.bak,查看healthcheck的状态】

docker ps

【由图上可知,healthcheck的状态已经改变,容器内的服务不可用,说明健康检测生效】

3.4  恢复index.html,查看healthcheck状态是否也恢复

(1)docker exec -it 12 /bin/bash

(2)再次查看healthcheck状态

docker ps

(3)完成

制作镜像实例之healthcheck相关推荐

  1. 制作镜像实例之ENV命令 - 设置环境变量

    1.创建dockerfile文件存放目录 mkdir /test cd /test 2.创建tar.gz文件 touch /root/{1..10}.txt cd /root tar zcvf tes ...

  2. openstack导出实例,制作镜像

    单位大哥,提供的制作镜像方案,比直接做镜像,占用空间小很多,还很方便. openstack在线制作镜像步骤: 1.将指定虚拟机配置好后关机 2.对此虚拟机"创建快照",之后会跳转到 ...

  3. 借助Docker hub自己手动制作镜像(以Nginx镜像为例)

    借助Docker hub自己手动制作镜像(以Nginx镜像为例) 前言 一.Docker hub是什么? 二.镜像制作步骤 1.进入Docker hub官网,获取源文件 2.制作镜像 3.验证镜像 总 ...

  4. (三)Docker----基础镜像(制作镜像),实现动静分离,本地镜像上传docker仓库

    文章目录 一. Docker 镜像与制作 手动制作nginx 镜像(不建议) DockerFile 制作nginx 镜像(建议) 手动制作编译版本 nginx 镜像(不建议) 提交为镜像: 装数据库 ...

  5. docker 制作镜像并发布到阿里云公有仓库

    大致操作步骤如下: 1.首先在阿里云创建镜像仓库 2.然后再本地制作镜像文件 3.把本地镜像文件推送到阿里云镜像仓库 4.其他云服务器进行阿里云镜像仓库拉取 5.启动容器 阿里云登录 - 欢迎登录阿里 ...

  6. Openstack 之 使用disk-image-builder(DIB)制作镜像

    Openstack中的centos和ubuntu操作系统的镜像可以直接从社区直接下载下来使用,但是总是感觉有问题,cloud-init初始化程序是通用的,启动速度很慢,查了一下相关信息,发现是clou ...

  7. redash二次开发和制作镜像

    简介: 上一篇文章,我们简单的测试了一下服务器环境和docker基础镜像.并没有涉及我们自己编写的flask python程序. 现在,我们就要把我们自己的flask程序,放进docker镜像. 但是 ...

  8. docker制作镜像篇(基于容器)

    docker制作镜像可以有两种方式: 一.基于容器(使用busybox制作http镜像) 1.首先运行一个容器 2.在容器当中配置自己的http,添加web目录,增加主页文件等. 3.查看原busyb ...

  9. 【制作镜像】BCEC制作镜像

    如要制作的新镜像已存在标准版本镜像,即linux发行版本相同(此处指CentOS6.5 64位),可利用BCEC制作. 在BCEC创建centos6.5系统的可联外网的虚机,ssh到此虚机,用yum方 ...

最新文章

  1. form中的onblur事件简单的介绍
  2. js实现页面跳转重定向的几种方式
  3. 漫画:Integer 竟然有 4 种比较方法?
  4. C++基础14-类和对象之多继承与虚继承
  5. 【clickhouse】Clickhouse 的group_concat 实现
  6. TCP慢开始与拥塞避免
  7. B站游戏大佬飘了?深挖B站辱北邮事件经过:不是第一次
  8. 轻量级网页安全漏洞扫描工具-Wapiti
  9. python滑稽脸程序
  10. win10下安装ubuntu双系统
  11. 用Python3抓取并分析猫眼电影TOP100
  12. 海南大学信号与系统838报考高频问题整理(4)
  13. NAND Flash(spi nand flash和nand flash)和emmc以及ufs通过uboot烧写固件的一些差异
  14. gps android 卫星位置,Android手机GPS获取卫星数量不正确问题
  15. Intel D435深度相机“No Frames Received!“问题
  16. 如何用Sonic云真机打王者
  17. android-4集成高德地图的搜索和导航功能
  18. 关于stm32的VCP技术原理
  19. ESXi修改网卡名称
  20. 计算机动画制作流程文字版,常见的三维动画制作流程总结

热门文章

  1. 计算机原理期中考试,计算机原理期中试卷(单招)
  2. python支持复数类型以下什么说法是错误的_python测试开发面试题1
  3. ManageCategories.cs
  4. 适用于linux的解压工具,Linux系统中常用的压缩和解压缩工具
  5. 100部好看的校园喜剧片
  6. 1188_什么是TVS管_瞬态抑制二极管
  7. 数据库的增删查改(全部重点知识一篇整合,包括数据库查询的进阶内容)
  8. Moore-Penrose伪逆
  9. 地震灾后36天!!成都彭州市龙门山镇团山村的一头肥猪废墟存活36天续:获名朱坚强将在博物馆终老
  10. 红日靶场vulnstack1 内网渗透学习