国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

強(qiáng)制異常容器重啟,讓你的Docker錦上添花

云計(jì)算
在沒有HEALTHCHECK指令之前,Docker只能通過process是否退出來判斷container的狀態(tài),不過有時(shí)候服務(wù)已經(jīng)無法正常運(yùn)作了,但process沒有退出,這樣會(huì)導(dǎo)致該服務(wù)仍然可以接收用戶請(qǐng)求,但是無法正常響應(yīng)。我們需要對(duì)這種容器進(jìn)行識(shí)別并自動(dòng)重啟。

今天我們接著上次的docker健康檢查機(jī)制那篇文章,講述一下如何給不健康的容器進(jìn)行重啟。另外有讀者反饋有幾個(gè)參數(shù)不是很理解,我們會(huì)在這篇文章里再補(bǔ)充講解一下。

Docker在1.12版本之后提供了HEALTHCHECK指令,可以設(shè)定一行command用來判斷服務(wù)的狀態(tài)是否正常,這樣可以更準(zhǔn)確地判斷服務(wù)狀態(tài)。

HEALTHCHECK Container啟動(dòng)后的初始狀態(tài)為starting,在指令檢查成功后,狀態(tài)會(huì)更改為healthy,如果連續(xù)失敗超過指定次數(shù)則會(huì)改為unhealthy。看下HealthCheck的工作機(jī)制。

HEALTHCHECK參數(shù)選項(xiàng):

--interval: Health check時(shí)間間隔,預(yù)設(shè)為30秒

--timeout:當(dāng)Health check超過此設(shè)定的時(shí)間,則會(huì)視為失敗,預(yù)設(shè)為30秒

--retries:當(dāng)Health check連續(xù)失敗次數(shù)超過此設(shè)定時(shí),則會(huì)將狀態(tài)更改為,預(yù)設(shè)為3次unhealthy

--start-period:啟動(dòng)時(shí)間,預(yù)設(shè)為0秒

HEALTHCHECK可以通過Dockerfile或是docker-compose.yml設(shè)定:

Dockerfile 示例

在Dockerfile中,HEALTHCHECK指令格式為

HEALTHCHECK [options] CMD <command>

<command>可以是shell指令或是exec格式(和其他Dockerfile指令相同,可以參考ENTRYPOINT)。而一個(gè)Dockerfile中只能有一個(gè)HEALTHCHECK指令,如果同時(shí)有多個(gè)HEALTHCHECK指令,則只有最后一個(gè)有效。

<command>的返回值代表container的狀態(tài):

0:成功,container is healthy

1:失敗,如果失敗超過指定次數(shù),則container為unhealthy

2: reserved,不要使用這個(gè)值

假設(shè)我們的container服務(wù)是web服務(wù),我們可以使用來檢查服務(wù)是否正常運(yùn)行,例如:每30秒檢查一次是否可在5秒內(nèi)響應(yīng)請(qǐng)求:curl http://localhost:3000

# ...


HEALTHCHECK --interval=30s --timeout=5s --retries=5 --start_period=30s \
  CMD curl -fs http://localhost:3000/ || exit 1


# ...

Docker-compose 示例

docker-compose.yml的healthcheck,示例如下:

version: "3.7"
services:
  api:
    restart: always
    image: api
    container_name: api
    ports:
      - 3000:3000
    build:
      context: ./api
    healthcheck:
      test: curl -fs http://localhost:3000/ || exit 1
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    networks:
      - net
networks:
  net:
    name: net
    driver: bridge

其中test必須是string或list.如果是list,第一個(gè)item必須是NONE,或CMD-SHELL。如果是string,則等同于CMD-SHELL。

確認(rèn)健康狀態(tài)

在設(shè)定好health check指令之后,接著啟動(dòng)container,檢查container狀態(tài)時(shí)可以看到初始狀態(tài)是:health: starting

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS                       NAMES
6c7b9ca321d2        api:1.0.0           "uwsgi --ini /home/d…"   5 seconds ago       Up 2 seconds (health: starting)   0.0.0.0:3000->3000/tcp      api

過30秒之后再執(zhí)行一次docker ps,可以看到container的狀態(tài)變成:healthy

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS                       NAMES
6c7b9ca321d2        api:1.0.0           "uwsgi --ini /home/d…"   35 seconds ago      Up 32 seconds (healthy)           0.0.0.0:3000->3000/tcp      api

而如果連續(xù)失敗超過指定次數(shù),狀態(tài)會(huì)變成unhealthy。

關(guān)鍵步驟:重新啟動(dòng)不正常的容器

以上的步驟只有檢查container的健康狀態(tài),但沒有針對(duì)unhealthy container做任何處理,這部分我們可以搭配docker-autoheal來重啟unhealthy container。先看下AutoHeal的工作機(jī)制。

autoheal可以直接使用docker執(zhí)行,或是寫在docker-compose中:

使用 docker 指令:

$ docker run -d \
    --name autoheal \
    --restart=always \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -v /var/run/docker.sock:/var/run/docker.sock \
    willfarrell/autoheal

使用docker-compose指令:

version: "3.7"
services:
  autoheal:
    restart: always
    image: willfarrell/autoheal
    container_name: autoheal
    environment:
      - AUTOHEAL_CONTAINER_LABEL=all
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

然后執(zhí)行 docker-compose up -d autoheal 就可以啟動(dòng)。

啟動(dòng)之后可以通過docker ps觀察unhealthy的容器是否重啟了。也可以查看autoheal的日志查看是否有啟動(dòng)記錄。

最后再給大家介紹一種模擬unhealthy的方法,正常情況下都是healthy的,可以通過修改命令來模擬unhealthy。比如模擬mysql的服務(wù),我們可以使用如下命令。

test: ["CMD", "nc -vz localhost 3307 || exit 1"]

正常監(jiān)聽3306端口,我們用3307連接檢查,就會(huì)一直處于unhealthy狀態(tài),這個(gè)時(shí)候我們可以通過autoheal的日志觀察到對(duì)mysql容器的重啟。

有了這個(gè)機(jī)制,以后docker假死的情況就可以自動(dòng)重啟了。這個(gè)檢查和自動(dòng)重啟機(jī)制對(duì)于數(shù)據(jù)庫或者tomcat服務(wù)都非常有用。如果使用過程中有什么問題也歡迎發(fā)消息給我們。

責(zé)任編輯:華軒 來源: 微技術(shù)之家
相關(guān)推薦

2014-02-09 14:49:51

云計(jì)算網(wǎng)絡(luò)IT

2011-12-31 08:58:04

服務(wù)器重啟Unix

2019-05-07 08:50:11

開源工具Kubernetes容器

2024-02-26 18:11:08

Docker容器鏡像

2021-07-01 10:03:55

Distroless容器安全

2018-04-24 10:05:13

Docker工具交付

2009-10-10 14:07:43

2014-12-26 09:52:08

Go

2012-09-20 15:11:31

Unix服務(wù)器

2017-02-10 11:00:59

Windows服務(wù)器filebeat

2019-08-19 08:00:00

服務(wù)器Ubuntu Live漏洞

2025-03-26 02:00:00

C#Docker開發(fā)

2023-08-28 10:54:09

容器Docker

2016-03-28 09:39:54

2019-05-14 14:27:36

KubernetesDocker存儲(chǔ)

2021-07-15 09:47:20

Docker容器命令

2020-04-26 15:38:28

Docker容器

2024-02-26 16:40:58

2025-03-13 11:32:23

2018-05-14 09:48:45

Linux內(nèi)核模塊Kgotobed
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美日韩aaaaa| 一区二区三区在线资源| 成人免费午夜电影| 欧美丝袜一区二区| 欧美一级淫片007| 欧美亚洲一级片| 久99久在线| 九色丨porny丨| 牛牛电影国产一区二区| 久久国产精品免费精品3p| 日韩av一区二区三区| 亚洲五月六月丁香激情| 中文字幕亚洲欧美一区二区三区 | 一二三四视频在线中文| 国产欧美一区二区三区米奇| 国产精品久久国产愉拍| 国产精品一页| 麻豆国产精品777777在线| 麻豆freexxxx性91精品| 麻豆精品国产传媒mv男同 | 国产传媒欧美日韩成人| 盗摄精品av一区二区三区| 国产三级精品在线| 亚洲国产aⅴ成人精品无吗| 欧美片网站yy| 色噜噜狠狠色综合网图区| 欧美丰满老妇厨房牲生活| 国产不卡av在线| 99视频在线| 精品丰满人妻无套内射| 女人一区二区三区| 久久久久无码国产精品一区| 2020欧美日韩在线视频| 中文字幕在线看视频国产欧美| www亚洲精品| 国产日韩精品视频| 黄色一级大片免费| 高清日韩av| 在线看片线路1| 久久亚洲精品中文字幕| 欧美日韩老妇| 免费av网站大全久久| 国产精品福利影院| 欧美猛男gaygay网站| 蜜臀av一级做a爰片久久| 久久99国产精品免费| 亚洲蜜臀av乱码久久精品蜜桃| 精品久久久网站| 91视频国产一区| 美女网站免费观看视频| h网站在线免费观看| 欧美成人福利| 久久精品72免费观看| 国产成人综合自拍| 国产在线不卡视频| 久久国产三级精品| 一区二区三区在线免费视频| 亚洲精品一区二区三区蜜桃下载 | 欧美视频在线第一页| 精品视频免费在线播放| 三级国产三级在线| 高清av一区| 麻豆精品久久精品色综合| 婷婷开心激情综合| 69**夜色精品国产69乱| 奇米777四色影视在线看| 在线观看三级视频| 成人在线国产| 国产精品天干天干在线综合| 亚洲黄页网在线观看| 成人天堂噜噜噜| 色婷婷亚洲十月十月色天| 欧美黄色成人| 欧美亚洲三区| 午夜精品福利视频网站| 九色精品免费永久在线| 麻豆一区二区三区在线观看| 黄在线免费观看| 欧美日韩日本国产亚洲在线| 欧美日韩色综合| 午夜精品久久久久久久男人的天堂| 一区二区三区四区五区精品| 中文字幕av在线| 欧美丰满日韩| 欧美羞羞免费网站| 蜜桃视频在线观看成人| 欧洲不卡视频| 日本欧美加勒比视频| 久久这里只有精品99| 50路60路老熟妇啪啪| 成人在线视频中文字幕| 国产人成亚洲第一网站在线播放| 国产一区欧美| 99国产一区| 国产三级精品视频| 精品少妇一区二区| 久久久久久亚洲精品不卡4k岛国 | 亚洲人亚洲人色久| 久久久不卡网国产精品一区| 久久九九有精品国产23| 日日摸日日碰夜夜爽无码| 成人永久在线| 欧美国产日产图区| 国产日本欧美一区二区三区在线 | 国产性天天综合网| 久久影视免费观看| av网站在线不卡| 欧洲乱码伦视频免费| 久久久精品2019中文字幕之3| 欧美性黄网官网| 国产午夜精品全部视频播放| 国产精品视频网站在线观看| 日韩欧美影院| 在线电影欧美成精品| 欧美亚洲精品日韩| 密臀av在线| 中文字幕亚洲欧美一区二区三区| 日韩一区二区免费在线电影 | 蜜桃av成人| 亚洲日本久久| 综合136福利视频在线| 91国内精品在线视频| 一区二区三区在线观看免费| 亚洲欧洲一区二区三区久久| 天天综合天天| 日韩综合小视频| 91tv亚洲精品香蕉国产一区7ujn| 久草在线免费福利资源| 从欧美一区二区三区| 97碰碰视频| 亚洲国产高清在线观看| 疯狂做受xxxx欧美肥白少妇| 亚洲一区二区三区777| 9色在线视频| 国产日韩欧美a| 日本中文不卡| 国产精品va| 国产精品福利在线| 欧美黄页免费| 欧美一级理论片| 日本在线视频www| 97欧美在线视频| 久久人91精品久久久久久不卡| 欧美精品一区二区三区精品| 免费理论片在线观看播放老| 国产亚洲电影| 国产伦精品一区二区三区在线观看 | 69堂免费精品视频在线播放| 欧美精品粉嫩高潮一区二区| 欧美极品在线| 久久riav二区三区| 99国产精品久久久久| 男人的天堂www| 一区二区高清免费观看影视大全 | 亚洲精品狠狠操| av免费在线观| 日韩女优av电影在线观看| jizzjizzjizz亚洲女| 久久精品国内一区二区三区| 欧美一级免费在线观看| 91综合久久爱com| 日韩有码视频在线| 久久青青色综合| 亚洲午夜精品网| 欧美与动交zoz0z| 亚洲电影影音先锋| 国产精品视频网| 国产精品一区免费在线 | 午夜精品蜜臀一区二区三区免费 | 91综合网人人| 欧美中文字幕在线视频| 超碰免费在线观看| 狠狠色狠狠色综合日日五| 理论片播放午夜国外| 亚洲色图在线播放| 无限国产资源| 狠狠色狠狠色综合日日小说| 最新黄色片网站| 亚洲一区二区三区三| 免费国产黄色网址| 成人不卡免费av| 好吊色欧美一区二区三区视频 | 99久久免费观看| 97精品国产| 国产精品扒开腿爽爽爽视频| 欧美一区二区麻豆红桃视频| 伊人av综合网| 国产极品人妖在线观看| 欧美一级日韩一级| aa视频在线观看| 亚洲自拍偷拍视频| 在线免费观看一区| 在线观看网站免费入口在线观看国内| 色综合久久天天综线观看| 成人污版视频| 日韩av手机在线| 亚洲国产午夜| 高清无码一区二区在线观看吞精| 高清不卡一区二区在线| 国产日本韩国在线播放|