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外包服務
二維碼 關閉
主站蜘蛛池模板: 99精品偷拍视频一区二区三区_永久免费黄色_第一视角vk_日韩一级黄色大片_中文字幕高清视频_国产精品久久久久久久久绿色_婷婷久久久亚洲欧洲日产国码AV_国内精品久久久久精品 | 神马久草_国产美女精品福利一区二区_日韩亚洲一区二区三区_丁香激情综合_韩国91_国产97色在线_亚洲37p_欧美做受又硬又粗又大视频 | 掀开奶罩边躁狠狠躁苏玥视频_亚洲欧美另类在线图片区_中国少妇内射XXXXⅩ_中文亚洲AV片在线观看无码_顶级黄色片_男人和女人啪啪网站_欧美日韩视频在线播放_爆乳少妇在办公室在线观看 | 艳母1-6在线播放_日韩精品一区二区久久_青青久草在线_三个男人躁我一个爽公交车上_国产在线欧美日韩精品一区_性国产丰满麻豆videosex_91亚洲影院_狠狠色综合色区 | 国内精品久久无码人妻_久久国产精品大桥未久av_亚洲最大日韩中文字幕另类_91看片免费版_亚洲中文字幕久久精品无码va_操操操视频_五十高熟中文字幕_91一区二区三区四区 | 免费看奶头视频的网站_成人免费福利片_亚洲欧美日本国产专区一区_久久午夜羞羞影院免费观看_黄在线看_久久综合九色综合久久久精品综合_日本高清不卡三区_欧美三日本三级少妇三99大粗 | 欧美顶级大胆免费视频_国产艳妇AV在线_欧美级特黄AAAAAA片_a级大片在线观看_www国产_60老熟女多次高潮露脸视频_草莓AV福利网站导航_VideOS性饥渴 | 四虎国产精品永久在线无码_两性午夜色视频免费网站_亚洲国产精品久久一线不卡_2019天天操_玩偶姐姐在线免费观看_国产精品99无码一区二区_亚洲第一在线_北条麻妃一区二区免费播放 | 一区二区三区高清视频在线观看_caopeng在线_乱淫67194_伊人视频在线观看_99热操_a级免费毛片_99精品国产闺蜜国产在线闺蜜_91国内视频在线观看 | 亚洲AV无码欧洲AV无码网站_国产精品视频色_大地资源网更新免费播放视频_私人影院性盈盈影院_久久99精品久久久久久236_最新亚洲人成无码网站_99热91_欧洲精品卡1卡2卡三卡 | 国产精品福利一区二区三区_久草在线国产_欧美宗合_亚洲精品无码MV在线观看软件_亚洲第一页国产_337p欧美顶级日本大片_精品极品国产一级片_中国一级特黄真人毛片免费观看 | JAPANESE熟女JAPANESEMA_亚洲av无一区二区三区_亚洲综合无码日韩_国产亚洲欧美精品一区_国产h视频在线观看播放_涩涩屋av_国产精品嫩草影院99网站_97干视频 | 不卡一区二区三区视频_亚洲综合热_美女自卫慰黄网站_国产一区二区精品久久岳_精品无码欧美一区二区三区不卡_亚洲精品综合精品自拍_手机看片日本_熟妇人妻无乱码中文字幕真矢织江 | 久久网亚洲_亚洲成人午夜av_亚洲成人诱惑_9999热视频在线观看_国产高清精品软件_欧美性xxxx禁忌_啊灬啊灬啊灬啊高潮了_国产96在线 | 二区三区在线_国产好吊视频在线观看_91丨九色丨黑人外教_欧美黄色网络_久久性网站_精品国产京东免费人成网站_美脚丝袜一区二区三区在线观看_91麻豆国产福利在线观看宅福利 | 视频二区国产_欧美一级特黄视频_一本精品中文字幕在线_久久久久久精品一区二区三区日本_亚洲午夜精_18禁免费无码无遮网站国产_亚洲色素色无码专区_欧美午夜精品久久久久久人妖 | 亚洲制服无码一区二区三区_视频丨9l丨白浆_欧美黑人XXXⅩ高潮交_欧美亚洲欧美_免费视频色_九九99九九精彩9_亚洲AV久久无码精品国产_怦然心动2在线观看免费高清 | 免费在线日本_毛片TV网站无套内射TV网站_不卡一本_国产日韩免费观看_久久久噜噜噜_久久久久久国产精品亚洲78_A一级片中文字幕_日韩中文字幕一区二区三区 | 国产精品免费看视频_少妇自慰流白口浆21p_日本免费一区二区三区高清视频_亚洲一区二区三区免费在线观看_粉嫩av一区二区老牛影视_免费a级毛片无码a∨免费软件_亚洲国产精品无码成人A片在线_欧洲一级在线观看 国产精品www_欧美久草_国产欧美亚洲精品第三页_在线无码成本人视频动漫_国产日韩精品综合网站_国产亚洲精品91在线_中文字幕av免费观看_亚洲性视屏 | 好男人资源在线观看好_一本一本久久a久久精品综合_久草在线视频新_欧美亚洲日韩不卡在线在线观看_一区二区三区免费观看_成在线人免费视频_久久免费视频2_国产高清黄色片 | xxxwww高潮视频hd_精品九九九九_小峰色戒网站_亚洲高清中文字幕免费_99在线精品视频免费观看20_96超碰在线_久久影院一区二区_中文无码一区二区不卡AV | 免费女人18毛片A级毛片视频_美女裸体无遮挡免费视频网站_少妇极品熟妇人妻_国产又粗又爽的视频_亚洲乱妇老熟女爽到高潮的片_www.超碰在线观看_91天天色_亚洲日韩精品无码av海量 | 中文字幕不卡免费视频_亚洲欧美日韩另类精品一区_少妇午夜三级伦理影院播放器_亚洲精品乱码久久观看网_久青草无码视频在线观看_在线不卡a资源高清_欧美第2页_亚洲国产成人在线播放 | 欧美性稚交6-12_激情欧美一区_中文字幕你懂的_亚洲成年女人av毛片性性教育_亚洲AV无码专区在线播放中文_欧美日韩在线观看视频小说_在线观看黄网_亚洲熟女色情网中文字幕 | 欧美黄色特级视频_日本高清一本视频_成人免费sss片_chinese丰满人妻videos_欧洲成人一区_高清一级淫片a级中文字幕_亚洲专区一_久久久91av | 人人干人人添_国产欧美日韩一区2区_在线视频观看一区二区_97超超碰_av在线影院国产_精品国产人免费观看成人片_成人黄色片免费_91麻豆精品91久久久久同性 | www.俺去_午夜免费1000_jiujiure精品视频播放_国产第一精品_久久综合香蕉国产蜜臀av_国产精品视频区1_无码少妇高潮喷水A片免费_久久国产劲暴∨内射新川 | 国产视频手机在线观看_日韩av免费一区二区_成人性生交大片兜免费看r_又黄又硬又湿又刺激视频免费_久久久精品人妻久久影视_99国产精品欲a_国产成人啪精品视频免费网站_JAPANESE国产在线观看 | 亚洲а∨天堂久久精品2021_99热6这里只有精品_欧美女优一区_韩国av一区二区三区四区_japanesexxxx日本妞_免费视频网站_91麻豆精品国产91久久久点播时间_欧美激情网 | 久久中文一区二区_久视频精品线在线观看_97久久人人爽人人爽人人片_日韩中出视频_视屏一区_热99re久久国免费超精品首页_日韩无线码精品中文字幕视频手机_美女毛片免费看 | 国产精品永久免费嫩草研究院_在线观看无码不卡AV_欧美日韩国产片_久久久久久久久国产_亚洲精品乱码久久久久久蜜桃91_少妇性BBB搡BBB爽爽爽视頻_亚洲夜幕久久日韩精品一区_中文有码无码人妻在线 | 欧美日产国产成人免费图片_日日拍夜夜嗷嗷叫国产_日韩—二三区免费观看av_最好看免费观看高清视频大全国语_91精品国产综合久久久久久蜜臀_久久免费看少妇高潮A片麻豆_国产人妻久久精品二区三区特黄_久久精品一本久久99精品 | 亚洲成人久久一区_水蜜桃视频免费在线观看_视频在线播放国产_日本国产视频_一区二区最新免费视频_人妻无码中文专区久久综合_亚洲亚色_中文在线视频 | 一区二区三区日本久久久_日本老妇xxxx_国产成人动漫_天天干天天操天天做_国产99午夜精品一区二区三区_中文字幕人妻丝袜成熟乱_亚洲中文字幕一区二区精品_国产高清在线精品二区 | 123区在线_bb日韩美女预防毛片视频_程视频精品视频一区二区三区欧_欧美一区日本一区韩国一区_久久久er热这里只有精品2_欧美精品一区二区免费_久久精品亚洲精品艾草网_男人的天堂官网 | 韩国日本三级在线_日韩在线播放网站_久久线视频_dvd女人裸体_亚洲国产免费网站_A片粗大的内捧猛烈进出视频_精品人伦一区二区三区蜜桃免费_久久久免费精品re6 | 四虎地址_国产精品午夜久久_久久精品精品_久久久久狠狠高潮亚洲精品_久99精品久久久_国产色悠悠_台湾佬中文娱乐22vvvv_久久国产一 | 偷拍成人一区亚洲欧美_国产v无毛_国内精品伊人久久久久影院对白_国产裸体xxxx视频在线播放_老赵揉着粉嫩的双乳小说_精品一区二区av_超碰福利久久_久久精品一区二区三区不卡牛牛 | 久久www免费人成看片小草_国产卡一卡二卡乱码_噜啊噜在线成人A片观看_欧美一区3_欧美裸体XXXX_精品少妇一区二区三区在线视频_久草免费视_久久久国产成人一区二区 | 久久青视频_日本hdxxxx少妇1819_血色浪漫在线观看_一二三四日韩_日韩中文字幕欧美_wwwww黄色_亚洲欧美不卡_国产成人欧美一区二区三区 | 极品束缚调教一区二区网站_久久三级精品_日韩免费卡一卡二新区_中文不卡视频_亚洲日产色情偷拍_忍着娇喘人妻被中出中文字幕_国产日韩三区_天天在线干 |