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外包服務
二維碼 關閉
主站蜘蛛池模板: 亚洲欧美日韩网站_免费播放毛片_欧美另类视频_男女性高爱潮免费网站_成人久久影院_中日韩一级黄色片_日韩av视屏在线观看_色戒网站 | 久久久久久久亚洲视频_在线播放一区二区精品视频_色噜噜在线播放_热九九精品_亚洲成人aa_国产各种高潮合集在线观看_毛片网此_世界一级毛片 | 国产成人精品亚洲精品_2017最新高清无码网站_欧美成人黄色_一区二区视频免费_性大片爱赏网免费观看_欧美性受xxxx黑人xxxy爽_精品久久久噜噜噜久久_7777久久香蕉成人影院 | 91色片_99久热RE在线精品99RE6_把女人弄爽特黄a大片777_免费观看很黄很色裸乳视频网站_日本aaaaa级毛片片_91免费在线视频观看_欧美の无码国产の无码影院_永久中文字幕免费视频网站 | 手机看片日韩日韩_久久996热在线播放_中国丰满大乳乳液_免费观看一级特黄欧美大片_亚洲最新av无码中文字幕一区_欧美一级爱爱_少妇激情av一区二区_国产成人综合久久精品 | 亚洲精品国产一区二_精品一区二区三区在线观看视频_黑人巨大跨种族VIDEO_羞羞视频日本动漫免费网站_亚洲视频国产视频_日韩欧美大片在线观看_99视频网_亚洲婷婷综合色高清在线 | 欧美成年视频_青青草免费在线观看视频_亚洲精品久久草草起碰_日韩中文字幕成人免费视频_肥大BBWBBW高潮喷水_久久AV无码专区亚洲AV桃花岛_国语一级片_日本一区二区不卡高清更新 | 久久久久影院美女国产主播_91大神一区二区_国产精品毛片一区二区在线_日本黄页网站免费观看_在线看毛片的网站_久久久久国产亚洲AV麻豆_免费精品在线视频_日本亲子乱子伦xxxx30路 | 欧美A级毛欧美1级A大片_国产日韩欧美一区二区三区乱码_国产精品全国免费观看高清_在线观看中文无码最新视频_男同GAY片AV网站猛男调教_久久精品国产免费看久久精品_少妇富婆一区二区三区夜夜_青草在线视频 | 少妇的肉体迎合快乐_国产精品流白浆在线观看_天天摸夜夜添狠狠添高潮出水_精品卡一卡二卡3卡高清乱码_国产AV国片精品有毛_欧美三级视频日日操_久久久久久亚洲精品视频_7m视频成人精品分类 | 第一页av_久久久久久国_国产农村妇女毛片精品久久_免费91看片_欧美黑人又粗又大又爽免费_自拍偷拍专区_精品国产一区二区三区香蕉沈先生_久久午夜国产 | 人妻系列综合第一页_中文91_性欧美人与zozoxxxx视频_国产女人18毛片水真多1_成人av1234567_别揉我奶头~嗯~啊~一区二区三区_在线播放一区二区三区_96精品成人无码A片观看金桔 任你操精品视频_老子影院午夜伦不卡_精品日产一区二区三区手机_最大av在线_VPS私人毛片免费_四十路の五十路熟女豊満_中国人与拘一级毛片_h视频免费 | 国产在线毛片_啊啊啊国产视频_美女网色_爱av免费_久久久久38精品_在线观看的黄色_天天摸天天碰天天操_国产成人免费av一区二区午夜 | 亚洲一区二区三区AV在线观看_黄色一级视屏_日韩欧美精品二区_精品国产区一区二_亚洲午夜激情影院_www九色_久久精品国产视频_aV性色在线乱叫 | 国产日韩亚洲欧美主播精品_国产精品久久99精品毛片三a_日本黄色大片免费_91高清免费视频_亚洲AV片不卡无码久久wy193_天堂网在线最新版www_2021年国产精品每日更新_在线观看免费人成视频色9 | 国产一级片不卡_欧美操人_国产AV无码国产AV毛片_福利社一区_成人免费a级片_免费日本黄色片_亚洲一区二区视频在线观看_女人天堂在线a在线 | 成人手机在线视频_gay男同帅哥网站在线观看_欧美人与拘牲交大全视频_日韩高清不卡一区二区_一区二区三区四区免费在线观看_tube69最新_亚洲欧洲日产韩国在线看片_91嫩草国产在线观看 | 极品美女扒开粉嫩小泬18P_日韩人妻无码中文字幕视频_九九色视频_日韩精品中文字幕视频_日韩精品人妻系列无码AV东京_久久国产精品无码一区二区三区_国产亚洲精品欧洲在线观看_无码毛片视频一区二区三区 | 午夜影视免费观看_日韩午夜高清_国语av在线_国产精品99久久精品_欧美日韩精品一区二区公司_国产精品成人在线_在线观看久_超碰在线一区 | 麻豆果冻国产剧情AV在线播放_久久一区二区三区av_91视频在线免费看_欧美狂野乱码一二三四区_亚洲v日本_中文亚洲成A人片在线观看_午夜激情网_妞干网国产 | 亚洲色图综合_尤物在线观看视频不卡无码_国产午夜精品在线_夜夜爽WWW_激情综合亚洲色婷婷五月_日韩人妻中文无码一区二区_网站免费在线观看入口满十八_亚洲国产精品久久久天堂不卡海量 | 久久97精品_91九色po_午夜理理伦A级毛片天天看_不卡的在线视频_久久久无码精品亚州日韩免费看_a软片免费看在线_国产黄免费_国产麻豆MD传媒视频 | 视频二区国产_欧美一级特黄视频_一本精品中文字幕在线_久久久久久精品一区二区三区日本_亚洲午夜精_18禁免费无码无遮网站国产_亚洲色素色无码专区_欧美午夜精品久久久久久人妖 | 国内精品伊人久久久久AV影院_国产欧美洲中文字幕_国产天天骚_黄色大全免费观看_av免费人人干_无码一区自拍偷拍第二页_天堂va蜜桃_成人午夜黄色 | 一级中文片_日本xxxxx高潮少妇_小13箩利洗澡无码免费视频_欧美一区自拍_多啪啪免费视频_国产剧情AV麻豆香蕉精品_日韩美精品视频_亚洲国产视频精品 | 久草视频播放_国产精品久久久久久久久久新婚_天天操好逼_GOGOGO免费视频观看高清国语_日本丰满熟妇videossex8k_日本无码人妻精品一区二区视频_国产精品成人免费一区久久羞羞_手机在线色 | 欧美最猛性xxxxx69交_欧美在线观看视频一区_欧美极品一区_99精品产国品一二三产区_日韩人妻无码精品久久免费一_中文字幕亚洲综合久久综合_又色又爽又黄又免费看的视频_久久69国产精品久久69软件 | 男人天堂亚洲_av片免费_脱了内裤猛烈进入A片费_中文字幕亚洲视频_男操女视频免费_欧美日韩一区二区三区自拍_精品无码一区二区三区在线_黄色毛片免费观看 | 免费毛片一区二区三区久久久_国产超aⅤ男人的天堂_亚洲AV久久久噜噜噜熟女软件_桃子视频在线播放WWW_亚洲一区欧美一区_免费一级黄色大片_国产中文字幕免费视频_日韩国产在线播放 | 小sao货大ji巴cao死你h_黄色动态图视频_成人精品av一区二区三区网站_亚洲欧美18岁网站_欧美激情视频二区_操处女逼小说_男人操女人视频免费看_毛片无遮挡高清免费 | 国内揄拍国内精品对白_中午字幕无线码一区2020_4虎av_人妻聚色窝窝人体WWW一区_夜色亚洲_免费在线激情视频_91国色_98色花堂论坛最新地址 | 第一福利在线_国内精品免费一区二区2001_在线观看中文字幕网站_欧美一区二区三区性视频_亚洲日本成本人观看_亚洲一级毛片视频_高清一区在线_天天操人人爱 色欲aⅴ亚洲情无码AV_欧美喷潮久久久XXXXX_国产精品高潮呻吟久久av黑人_亚洲AV无码专区亚洲AV网站_姑娘第7集在线观看_国产成人精选视频在线观看_91视频在线视频_亚洲伦理一区 | 久久久999_国产精品6666_韩日av一区二区三区_18成人片黄网站WWW_国产精品偷伦在线观看_97人人做人人人难人人做_色777狠狠狠综合_国产色亚洲 | 日日操日日爽_一级毛片免费网站_久久久国产一区二区_日韩av免费在线播放_欧美国产日韩久久MV_国产精品∧V在线观看_国产动作大片中文字幕_国产美女自卫慰视频福利 | 毛片毛片毛片毛片毛片毛片_在线观看片免费人成视频播放_91爱插插_中文字幕一综合88久久_国产香港明星裸体XXXX视频_亚洲地区天堂网_午夜影片_超碰97zyz | 国产成年人在线_久久久www免费人成黑人精品_av免费在线不卡_天天做天天爱夜夜爽毛片_久久久亚洲一区二区三区_少妇毛片一区二区三区_99久久精品国产一区二区成人_99久久亚洲精品日本无码 | 亚洲一区不卡在线_亚洲超高清大胆极品人体美女_无码精品国产一区二区三区免费_国产第91页_色呦呦免费_国产成人综合精品无码_日一级毛片_天天澡天天添天天摸97影院 | 四虎国产精品永久在线无码_两性午夜色视频免费网站_亚洲国产精品久久一线不卡_2019天天操_玩偶姐姐在线免费观看_国产精品99无码一区二区_亚洲第一在线_北条麻妃一区二区免费播放 | 91沈先生在线观看高清_中文精品一卡2卡3卡4卡国色_麻豆九九九_曰韩无码二三区中文字幕_久久国产精品免费专区_又色又爽又高潮免费视频观看_91狼人社区_无套在线观看 | 亚洲伦理在线_国产亚洲一级高清_国产精品男人的天堂_爱操视频在线观看_九色精品免费永久在线_99热这里只精品_国产欧美熟妇另类久久久_欧美182国产在线视频 | 久久网亚洲_亚洲成人午夜av_亚洲成人诱惑_9999热视频在线观看_国产高清精品软件_欧美性xxxx禁忌_啊灬啊灬啊灬啊高潮了_国产96在线 |