婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Docker 的健康檢測(cè)機(jī)制

Docker 的健康檢測(cè)機(jī)制

熱門標(biāo)簽:柳州市機(jī)器人外呼系統(tǒng)報(bào)價(jià) 外呼系統(tǒng)不彈窗 外呼系統(tǒng)的經(jīng)營(yíng)范圍 云會(huì)外呼系統(tǒng) 廈門營(yíng)銷外呼系統(tǒng)平臺(tái) 涪陵商都400電話開(kāi)通辦理 申請(qǐng)400電話價(jià)格多少 智能電話機(jī)器人坐席 安陽(yáng)ai電銷機(jī)器人軟件

對(duì)于容器而言,最簡(jiǎn)單的健康檢查是進(jìn)程級(jí)的健康檢查,即檢驗(yàn)進(jìn)程是否存活。Docker Daemon會(huì)自動(dòng)監(jiān)控容器中的PID1進(jìn)程,如果docker run命令中指明了restart policy,可以根據(jù)策略自動(dòng)重啟已結(jié)束的容器。在很多實(shí)際場(chǎng)景下,僅使用進(jìn)程級(jí)健康檢查機(jī)制還遠(yuǎn)遠(yuǎn)不夠。比如,容器進(jìn)程雖然依舊運(yùn)行卻由于應(yīng)用死鎖無(wú)法繼續(xù)響應(yīng)用戶請(qǐng)求,這樣的問(wèn)題是無(wú)法通過(guò)進(jìn)程監(jiān)控發(fā)現(xiàn)的。

通常我們?yōu)榱朔乐谷萜鲾嚯娀虍惓jP(guān)閉后不能自動(dòng)開(kāi)機(jī),我們可以加上

--restart=always 

例如

[root@aliyun ~]# docker run --restart=always -d --name blog -d -v /www:/www -v /wwwlogs:/var/log/wwwlogs -p 65423:65422 -p 80:80 -p 443:443 677
7714a84063ee6d405c80b891254bba0e5930f5d271c5ad76cfd6e2f0058d8056

這樣容器就可以自動(dòng)重啟,但是有時(shí)候程序進(jìn)入死鎖狀態(tài),或者死循環(huán)狀態(tài),應(yīng)用進(jìn)程并不退出,但是該容器已經(jīng)無(wú)法提供服務(wù)了。在 1.12 以前,Docker 不會(huì)檢測(cè)到容器的這種狀態(tài),從而不會(huì)重新調(diào)度,導(dǎo)致可能會(huì)有部分容器已經(jīng)無(wú)法提供服務(wù)了卻還在接受用戶請(qǐng)求。

而自 1.12 之后,Docker 提供了 HEALTHCHECK 指令,通過(guò)該指令指定一行命令,用這行命令來(lái)判斷容器主進(jìn)程的服務(wù)狀態(tài)是否還正常,從而比較真實(shí)的反應(yīng)容器實(shí)際狀態(tài)。

當(dāng)在一個(gè)鏡像指定了 HEALTHCHECK 指令后,用其啟動(dòng)容器,初始狀態(tài)會(huì)為 starting,在 HEALTHCHECK 指令檢查成功后變?yōu)?healthy,如果連續(xù)一定次數(shù)失敗,則會(huì)變?yōu)?unhealthy。

HEALTHCHECK 支持下列選項(xiàng):

  • –interval=<間隔>:兩次健康檢查的間隔,默認(rèn)為 30 秒;
  • –timeout=<時(shí)長(zhǎng)>:健康檢查命令運(yùn)行超時(shí)時(shí)間,如果超過(guò)這個(gè)時(shí)間,本次健康檢查就被視為失敗,默認(rèn) 30 秒;
  • –retries=<次數(shù)>:當(dāng)連續(xù)失敗指定次數(shù)后,則將容器狀態(tài)視為 unhealthy,默認(rèn) 3 次。和 CMD, ENTRYPOINT 一樣,HEALTHCHECK 只可以出現(xiàn)一次,如果寫了多個(gè),只有最后一個(gè)生效。

在 HEALTHCHECK [選項(xiàng)] CMD 后面的命令,格式和 ENTRYPOINT 一樣,分為 shell 格式,和 exec 格式。命令的返回值決定了該次健康檢查的成功與否:0:成功;1:失敗;2:保留,不要使用這個(gè)值。

下面我們看下這個(gè) dockerfile 文件

FROM centos
LABEL maintainer "awen Email: <hi@awen.me>"
WORKDIR /opt/

COPY CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
COPY nginx /etc/init.d/nginx

ENV NGINX_V=1.13.5 \

  OPENSSL_V=1.0.2l \

  PCRE_V=8.41 \

  ZLIB_V=1.2.11 

RUN yum -y update \

  && yum -y install openssh-server openssl gcc gcc-c++ pcre-devel openssl-devel zlib-devel wget make perl tar net-tools \

  && wget -c -4 https://nginx.org/download/nginx-$NGINX_V.tar.gz \

  && wget -c -4 https://www.openssl.org/source/openssl-$OPENSSL_V.tar.gz \

  && wget -c -4 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-$PCRE_V.tar.gz \

  && wget -c -4 http://zlib.net/zlib-$ZLIB_V.tar.gz \

  && groupadd -r www && useradd -r -g www www \

  && tar zxvf zlib-$ZLIB_V.tar.gz \

  && cd zlib-$ZLIB_V \

  && ./configure \

  && make \

  && make install \

  && cd /opt \

  && tar zxvf pcre-$PCRE_V.tar.gz \

  && cd pcre-$PCRE_V \

  && ./configure \

  && make \

  && make install \

  && cd /opt \

  && tar zxvf openssl-$OPENSSL_V.tar.gz \

  && tar zxvf nginx-$NGINX_V.tar.gz \

  && cd nginx-$NGINX_V \

  && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/pcre-$PCRE_V --with-http_ssl_module --with-zlib=/opt/zlib-$ZLIB_V --with-openssl=/opt/openssl-$OPENSSL_V --with-http_v2_module --with-http_ssl_module \

  && make \

  && make install \

  && rm -rf /opt/* \

  && mkdir -p /usr/local/nginx/ssl \

  && mkdir -p /usr/local/nginx/conf/vhost \

  && mkdir -p /var/log/wwwlogs/ \

  && mkdir -p /www/ \

  && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' \

  && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' \

  && ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \

  && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' \

  && echo "RSAAuthentication yes" >> /etc/ssh/sshd_config \

  && echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config  \

  && sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config \

  && sed -i "s/UsePAM yes/UsePAM no/g" /etc/ssh/sshd_config \

  && sed -i "s/#Port 22/Port 65422/g" /etc/ssh/sshd_config \

  && yum clean all \

  && mkdir /var/run/sshd \

  && chmod +x /etc/init.d/nginx \

  && rm -rf /root/*.cfg \

  && echo "Asia/Shanghai" > /etc/localtime


COPY ssl/* /usr/local/nginx/ssl/ 
COPY vhost/* /usr/local/nginx/conf/vhost/
COPY nginx.conf /usr/local/nginx/conf/
COPY ssh/* /root/.ssh/


VOLUME ["/www","/var/log/wwwlogs","/usr/local/nginx/ssl","/usr/local/nginx/conf/vhost"]

EXPOSE 65422 80 443

HEALTHCHECK CMD curl -fs http://localhost/ || exit 1
ENTRYPOINT /etc/init.d/nginx start && chown -R www:www /var/log/wwwlogs/ && /usr/sbin/sshd -D

其中

HEALTHCHECK CMD curl -fs http://localhost/ || exit 1

就是增加的健康監(jiān)測(cè)配置,然后編譯后啟動(dòng),查看進(jìn)程會(huì)發(fā)現(xiàn)其狀態(tài)是 starting

[root@aliyun ~]# docker ps -a
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS              PORTS                                NAMES
7714a84063ee    677         "/bin/sh -c '/etc/ini"  3 seconds ago    Up 2 seconds (health: starting)  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:65423->65422/tcp  blog

稍等查看,會(huì)發(fā)現(xiàn)其狀態(tài)為 healthy

[root@aliyun ~]# docker ps -a
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS            PORTS                                NAMES
7714a84063ee    677         "/bin/sh -c '/etc/ini"  About a minute ago  Up About a minute (healthy)  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:65423->65422/tcp  blog

我們可以通過(guò) inspect 查看 最近3次的狀態(tài)

[root@aliyun ~]# docker inspect --format '{{json .State.Health}}' blog | python -m json.tool
{
  "FailingStreak": 0,
  "Log": [
    {
      "End": "2017-10-11T11:15:27.516562686+08:00",
      "ExitCode": 0,
      "Output": "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "Start": "2017-10-11T11:15:27.470554485+08:00"
    },
    {
      "End": "2017-10-11T11:15:57.563377729+08:00",
      "ExitCode": 0,
      "Output": "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "Start": "2017-10-11T11:15:57.516690754+08:00"
    },
    {
      "End": "2017-10-11T11:16:27.609685416+08:00",
      "ExitCode": 0,
      "Output": "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "Start": "2017-10-11T11:16:27.563533362+08:00"
    },
    {
      "End": "2017-10-11T11:16:57.654441173+08:00",
      "ExitCode": 0,
      "Output": "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "Start": "2017-10-11T11:16:57.609810588+08:00"
    },
    {
      "End": "2017-10-11T11:17:27.701113019+08:00",
      "ExitCode": 0,
      "Output": "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n",
      "Start": "2017-10-11T11:17:27.654580727+08:00"
    }
  ],
  "Status": "healthy"
}

如果健康檢查連續(xù)失敗超過(guò)了重試次數(shù),狀態(tài)就會(huì)變?yōu)?(unhealthy)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:蕪湖 南充 撫順 晉城 綏化 福州 孝感 巴中

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker 的健康檢測(cè)機(jī)制》,本文關(guān)鍵詞  Docker,的,健康,檢測(cè),機(jī)制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Docker 的健康檢測(cè)機(jī)制》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Docker 的健康檢測(cè)機(jī)制的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 克什克腾旗| 河源市| 丹棱县| 乌兰察布市| 万山特区| 弋阳县| 余庆县| 双流县| 两当县| 明光市| 聊城市| 吉水县| 定结县| 孟连| 武隆县| 兴海县| 岳阳县| 龙海市| 陕西省| 青龙| 桃园市| 馆陶县| 潮安县| 黄骅市| 潼关县| 常熟市| 赣州市| 紫云| 封开县| 麻江县| 双江| 三门县| 富宁县| 盐山县| 大厂| 深圳市| 丹江口市| 岚皋县| 尼勒克县| 忻州市| 昌平区|