456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费

IT之道-艾銻知道

您當前位置: 主頁 > IT服務 > 服務器服務 >

服務器維護docker容器如何優雅的終止詳解


2020-05-27 17:34 作者:艾銻無限 瀏覽量:

如何做好服務器維護?北京艾銻無限科技與你談談IT人員必須知道的服務器維護信息

服務器維護過程中,我們日常的項目當中,這是我們經常需要面對和處理的問題:

 服務器維護場景A:假如我們打包在容器中的程序,提供HTTP方式的服務,負責處理各種HTTP requests并返回結果,我們必然希望在容器被停掉的時候,能夠讓程序有時間把已經在處理中的請求繼續處理完畢,并返回結果給客戶端。

服務器維護場景B:又比如我們打包在容器中的程序,負責寫入數據到某個數據文件中,我們希望程序能夠在容器被停掉的時候,有時間把內存中緩存的數據持久化到存儲設備中,以防數據丟失。

服務器維護場景C:再比如現在流行的微服務架構中,一般會有服務發現的機制,也即每一個微服務在啟動之后,都會主動把自己的地址信息注冊到服務發現模塊當中,讓其他的服務可以知道自己的存在。而在容器被停掉的時候,微服務需要即時從服務發現模塊中注銷自己,以防止從API Gateway而來的請求被錯
誤的路由到了已經被停止掉的微服務。

如上的各種場景中,都要求打包在容器中的應用程序能夠被優雅的終止(也即gracefully shutdown),這種gracefully shutdown的方式,允許程序在容器被停止的時候,有一定時間做一些后續處理操作,這也是我們需要進一步探討的話題。

服務器維護提示:docker stop 與 docker kill 的區別

Docker本身提供了兩種終止容器運行的方式,即docker stop與docker kill。

服務器維護要點:docker stop

先來說說docker stop吧,當我們用docker stop命令來停掉容器的時候,docker默認會允許容器中的應用程序有10秒的時間用以終止運行。所以我們查看docker stop命令幫助的時候,會有如下的提示:

1

2

3

4

5

6
→ docker stop --help

Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers

Options:

  --help  Print usage

 -t, --time int Seconds to wait for stop before killing it (default 10)

在docker stop命令執行的時候,會先向容器中PID為1的進程發送系統信號SIGTERM,然后等待容器中的應用程序終止執行,如果等待時間達到設定的超時時間,或者默認的10秒,會繼續發送SIGKILL的系統信號強行kill掉進程。在容器中的應用程序,可以選擇忽略和不處理SIGTERM信號,不過一旦達到超時時間,程序就會被系統強行kill掉,因為SIGKILL信號是直接發往系統內核的,應用程序沒有機會去處理它。在使用docker stop命令的時候,我們唯一能控制的是超時時間,比如設置為20秒超時:

1
docker stop --time=20 container_name

服務器維護要點:docker kill

接著我們來看看docker kill命令,默認情況下,docker kill命令不會給容器中的應用程序有任何gracefully shutdown的機會。它會直接發出SIGKILL的系統信號,以強行終止容器中程序的運行。通過查看docker kill命令的幫助,我們可以看到,除了默認發送SIGKILL信號外,還允許我們發送一些自定義的系統信號:

1

2

3

4

5
6

→ docker kill --help

Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers

Options:
  
--help   Print usage
 
-s, --signal string Signal to send to the container (default "KILL")

比如,如果我們想向docker中的程序發送SIGINT信號,我們可以這樣來實現:

1 docker kill --signal=SIGINT container_name

與docker stop命令不一樣的地方在于,docker kill沒有任何的超時時間設置,它會直接發送SIGKILL信號,以及用戶通過signal參數指定的其他信號。

其實不難看出,docker stop命令,更類似于Linux系統中的kill命令,二者都是發送系統信號SIGTERM。而docker kill命令,更像是Linux系統中的kill -9或者是kill -SIGKILL命令,用來發送SIGKILL信號,強行終止進程。

服務器維護提示:在程序中接收并處理信號

了解了docker stop與docker kill的區別,我們能夠知道,docker kill適合用來強行終止程序并實現快速停止容器。而如果希望程序能夠gracefully shutdown的話,docker stop才是不二之選。這樣,我們可以讓程序在接收到SIGTERM信號后,有一定的時間處理、保存程序執行現場,優雅的退出程序。

接下來我們可以寫一個簡單的Go程序來實現信號的接收與處理,程序在啟動過后,會一直阻塞并監聽系統信號,直到監測到對應的系統信號后,輸出控制臺并退出執行。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// main.go

package main

import (

 "fmt"

 "os"

 "os/signal"

 "syscall"

)

func main() {

 fmt.Println("Program started...")

 ch := make(chan os.Signal, 1)

 signal.Notify(ch, syscall.SIGTERM)

 s := <-ch

 if s == syscall.SIGTERM {

 fmt.Println("SIGTERM received!")

 //Do something...

 }

 fmt.Println("Exiting...")
}

接下來服務器維護要點:使用交叉編譯的方式來編譯程序,讓程序可以在Linux下運行:

1
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o graceful
 

編譯好之后,我們還需要打包程序到容器中運行。于是,我們還得有個Dockerfile。在這里,我們選擇使用體積小又輕盈的alpine鏡像作為基礎鏡像,打包這個Go程序:

1
2
3
4
from alpine:latest

MAINTAINER Timothy

ADD graceful /graceful

CMD ["/graceful"]
 
服務器維護要點:這里需要避開的一個坑,是Dockerfile中CMD命令的用法。

服務器維護要點:CMD命令有兩種方式:

1 CMD /graceful

使用 CMD command param1 param2 這種方式,其實是以shell的方式運行程序。最終程序被執行時,類似于/bin/sh -c的方式運行了我們的程序,這樣會導致/bin/sh以PID為1的進程運行,而我們的程序只不過是它fork/execs出來的子進程而已。前面我們提到過docker stop的SIGTERM信號只是發送給容器中PID為1的進程,而這樣,我們的程序就沒法接收和處理到信號了。

1 CMD [“/graceful”]

使用 CMD [“executable”,”param1”,”param2”] 這種方式啟動程序,才是我們想要的,這種方式執行和啟動時,我們的程序會被直接啟動執行,而不是以shell的方式,這樣我們的程序就能以PID=1的方式開始執行了。

話題轉回來,我們開始執行容器構建操作,打包程序:

1 docker build -t registry.xiaozhou.net/graceful:latest .

 

打包過后的鏡像,才6MB左右:

1
2
3
λ Timothy [workspace/src/graceful] → docker images

REPOSITORY            TAG     IMAGE ID   CREATED    SIZE

registry.xiaozhou.net/graceful       latest    b2210a85ca55  20 hours ago  6.484 MB
 

啟動并運行容器:

1 λ Timothy [workspace/src/graceful] → docker run -d --name graceful b2210a85

查看容器運行狀態:

1
2
3

λ Timothy [workspace/src/graceful] → docker ps -a

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

fd18eedafd16  b221    "/graceful"   3 seconds ago  Up 2 seconds       graceful

查看容器輸出,能看到程序已經正常啟動:

1
2
λ Timothy [workspace/src/graceful] → docker logs graceful

Started...

服務器維護要點:接著我們要使用docker stop大法,看程序能否響應SIGTERM信號:

1
2
λ Timothy [workspace/src/graceful] → docker stop graceful

graceful

最后,查看容器的日志,檢驗輸出:

1
2
3
4
λ Timothy [workspace/src/graceful] → docker logs graceful

Started...

SIGTERM received!

Exiting...
 
以上內容為北京艾銻無限科技發展有限公司IT外包服務公司為大家提供的服務器維護小知識,更多內容請關注:www.bjitwx.com

相關文章

IT外包服務
IT電腦維護外包IT電腦維護外包
網站建設與維護IT網站建設與維護
IT設備采購服務IT設備采購服務
IT基礎設施服務IT基礎設施服務
IT應用及數據服務IT應用及數據服務
IT管理及流程服務IT管理及流程服務
二維碼 關閉
主站蜘蛛池模板: 男女午夜猛烈啪啦啦视频_蜜臀成人av_国产精久久一区二区三区_国产农村乱_四虎永久在线精品国产馆v视影院_97欧美一乱一性一交一视频_av中出_中文无码乱人伦中文视频在线V | 成人在线观看不卡_国产人成视频在线视频_91亚洲精品久久久中文字幕_九九九九九九精品_超碰人人插_麻豆文化传媒在国产之光_国产精品久久综合_成年人网站国产 | 午夜一区二区三区在线观看_免费看黄色的网站_九九热视频在线观看_嫩草AV无码精品一区三区_91精品无毒不卡_中品极品少妇xxx_四虎在线网址_国产三级网站 | 久久99精品久久久久久秒播放器_18禁勿入免费网站入口不卡_WWW亚洲色大成网络.COM_上流社会在线_亚洲看片lutube在线观看_麻豆亚洲高清无矿砖码区_在线国产1区_国产欧美精品一区二区三区介绍 | 国产精品视频1_国产一级毛片在线看_亚洲国产精品无码毛_成人97精品毛片免费看_97高清国语在线看免费观看_少妇三级全黄在线播放_国产欧美一区二区三区免费看_欧美大波少妇在厨房被 | 亚洲成年人av_日本高清不卡一区二区三区视频_羞羞答答xxdd在线播放_97国产_日本十八禁免费看污网站_天天综合网久久_美女18禁裸乳裸体无遮挡的网站_伊人久久精品一区二区三区 | 免费av直接进入_日本欧美韩国_老寡妇一区二区三区猛交xxx_五月激情网站_美女视频黄免费观看_总裁与秘书高h肉_手机看片91_蜜桃麻豆WWW久久囤产精品 | 欧美精产国品一二三类产品特点_久久久亚洲精品一区二区三区_夭天干天天躁天天摸_AV在线观看_免费毛片av_成人AV免费视频_91色伦_日本aaaa片毛片免费观看视频 | 一区二区色_黄色片子在线观看_超碰97国产精品人人cao_性夜影院在线观看_中国一级簧片_少妇又色又爽又高潮极品_91不卡_免费人成网站www 水蜜桃AV无码_看黄网站在线看_国产黄在线看_国产日产免费高清欧美一区_青青草综合视频_免费久久久久_精品91久久久_久久国产精品无码网站 | 国产色系视频在线观看免费_国产精品视频在_日本xxxxx片免费_一级片片_麻豆视频免费版_国产精品美女久久久久图片_国产在线精品一区二区中文_av集市 | 超碰二区_精品剧情V国产在线观看_色屁屁WWW免费看欧美激情_国产美女裸体丝袜喷水视频_免费又黄又爽又猛大片午夜_在线黄色av网站_国产91白丝在线播放_高潮喷水的网站 | 涩五月婷婷_国产精品多久久久久久情趣酒店_国产精品sm在线观看_free男子游泳部第三季_热久久性_天天弄夜夜操_人人干日日操_龙珠z免费观看国语版 | 成人综合激情_亚洲精品视频大全_亚洲欧美中文字幕在线观看_亚洲欧美国产日产综合不卡_妖精成人www高清在线观看_北条麻妃在线看_大香焦久久_精品在线一区 | 亚洲综合精品在线_亚洲欧洲精品专线_噼里啪啦免费观看高清动漫_手机av免费在线_日本黄色片日本黄色片_chinese国产avvideoxxxx实拍_成人片免费网站_福利中文字幕 | 亚洲一二三四果冻传媒_免费精品视频一区_国产伦一区二区三区久久_国产午夜精品一区二区三区欧美_午夜久久久久久久久久久久_国产亚洲h网综合h网_福利国产在线_亚洲美女久久久 | 高潮毛片无遮挡免费高清_午夜亚洲精品专区高潮日w_在线欧美a_国产成人午夜精华液_全球av在线_亚洲精品久久久蜜夜影视_奇米影视888狠狠狠777不卡_亚洲色大成网站www久久 | 一级看片免费视频囗交_亚洲日韩在线中文字幕线路2区_国产一级片免费_久久精品a一级国产免视看成人_成人超碰在线观看_亚洲香蕉视频综合在线_久久毛片免费观看_2019年中文字字幕在线看不卡 | 黄色在线视频网_91蜜桃臀久久一区二区_亚洲永久精品ww.7491进入_又黄又爽又色视频免费_CHINESEMATURE老女熟_国产视频一区二区91_秋霞a级毛片在线看_欧美日韩另类一区二区 | 国内高清视频在线观看_永夜星河免费看_超碰公开免费_亚洲精品免费av_啦啦啦在线观看免费版中文_亚洲第一se情网站_亚洲AⅤ人片在线观看无_久久免费视频5 | 一区二区视频免费在线观看_色五月激情五月_久久露脸国产精品_天天干干夜夜_亚洲AV无码专区久久蜜芽_日韩av成人女同恋_大地在线资源_国产精品久久久久久一区二区三区 | 国产精品亚洲片在线播放_久久综合九色综合欧美就去吻_男人扒开女人腿喷水视频_天天久久久_www.黄色片_日韩AV一区三区_国产制服丝袜免费视频_亚洲第一综合最大av | 中文字幕在线观看不卡视频_色悠久久久久综合网国产_黄色大片视频_真人作爱免费视频_男女性色大片免费网站_精品人妻少妇一区二区三区_四虎影视8848h_日韩人妻无码一区二区三区99 | 成人小视频在线观看免费_麻豆精品久久久久久中文字幕无码_国产成人麻豆精品午夜福利在线_精品成av人一区二区三区_影视先锋男人无码在线_青青草青娱乐在线_天操夜夜操_精品一区毛片 | 在线黑人抽搐潮喷_欧美日韩国产精品_亚洲欧美日韩成人综合一区_free性欧美人与dog_亚洲免费精品视频_4tube在线观看_久久精品日_69精品久久久久9999不卡片 | 韩国日本三级在线_日韩在线播放网站_久久线视频_dvd女人裸体_亚洲国产免费网站_A片粗大的内捧猛烈进出视频_精品人伦一区二区三区蜜桃免费_久久久免费精品re6 | 天天做天天爱天天操_日日噜噜大屁股熟妇_久草免费手机视频_国产国产成人久久精品_国产主播精品_久久午夜无码人妻鲁丝片午夜精品_一性一交一伦一色一按—摩_中文字幕成人网 | 999久久久国产精品消防器材_国产美女视频一区_日韩三级免费_国产超碰在线观看_亚州ava_亚洲AV无码专区日韩乱码不卡_久久久国产乱子伦精品_久久ri资源网 | 精品国产亚洲第一区二区三区_gay取精潮喷10次_日韩国产在线看_国产一区二区三区网_九七视频在线观看_日韩在线中文字幕视频_高清无码专区av_av网站大全在线观看 | 成人乱码免费视频A片含羞草传媒_成人午夜毛片_国产精品久久久久永久免费_久久精品成人免费国产_亚州av网_91剧场_青青青草伊人_亚洲精品一区二区三区蜜桃久 | 写真福利视频_香蕉尹人综合在线观看_欧美中文字幕第一页_亚洲国产精品无码一线岛国_一本到无码av专区无码不卡_国产精品一区二区在线观看99_欧美激情A片久久久久久_青青操在线播放 | 最新国产精品视频_夫妇交换av888_精品国产美女a久久9999_精品久久久久久无码人妻蜜桃_精品久久久一_拔插拔插在线观看_无码人妻精品专区在线视频_国产在线啪 | 欧美xxxx做受欧美_久久青青草原国产毛片_亚洲综合伊人_久久精品国产99国产精品亚洲_不卡一不卡二不卡三_男人女人真曰批视频播放在线_91高清视频在线免费观看_太大太粗太爽免费视频 | 国产网站久久_超碰99热_国产痴女资源在线不卡_欧美偷拍另类_av不卡免费_艹逼视频免费观看_国产精品一区二区三区成人_亚洲成年人在线 | 午夜影视国产片_久久精点视频_国产精品a久久777777_欧美国产日韩成人_国产女人视频在线观看_52avaⅴ我爱haose免费视频_成人A片色情免费观看_国产小视频在线观看 | 少妇性色午夜淫片aaa播放5_另类成人专区_亚洲精品视频免费在线_中文理论片_99久久国产综合精麻豆_亚洲麻豆视频_国产免费又黄又爽又色毛_国产丰满乱子伦无码一区二区 | 人人妻人人做人人爽_天天操天天草_少妇小莹的yin荡生活下视频_久草老司机_成人国产一区二区_天天天天天天天天操_国产娱乐凹凸视觉盛宴在线视频_亚洲vs天堂 | 国产三区四区_欧美激情自拍偷拍_免费网站成人亚洲_精品无人乱码一区二区三区介绍_欧美成人a天堂片在线观看_亚洲精品免费看_欧美在线三级艳情网站_久久久久成人网 | 97caopron在线视频_久久精品国产免费观看_色欲AV蜜桃一区二区三_久久精品88_瑞典性xxxxxhd高清_69av网站_91大神新作在线观看_巨茎爆乳无码性色福利 国产福利一区二区三区在线播放_中文字幕久精品免费视频_毛片a在线_精品黄色视_免费观看韩国理论片_成人免费A级毛片无码_一级免费看_中文字幕永久免费 | 一级片国产_高清国产午夜精品久久久久久_hd国产人妖ts另类视频_欧美黑人精品一区二区不卡_午夜影院在线观看版_老司机亚洲精品影院_女明星黄网站色视频免费国产_国产网址 | 绯色av_精品免费成人_亚洲欧美日韩精品成人_外国av在线_麻豆av免费网站_各种高潮videos抽搐合集免费_成人免费看片视频_欧美性生交大片免费看A片免费 | 激情三级_91精品久久久久久久久不卡_国产一区二区三区四区五区tv_熟睡被义子侵犯中文字幕_亚洲自拍偷拍一区_欧美a级黄_黄色小说av_四虎成人免费 |
网络维护咨询
服务器维护咨询
弱电项目咨询
桌面维护咨询
其它业务咨询
请您留言

艾锑无限 15601064618(同微信)

提交