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外包服務
二維碼 關閉
主站蜘蛛池模板: 91成人亚洲综合欧美日韩_亚洲福利精品视频_正在播放白领少妇第一次_亚洲人成网站观看在线播放_久久精品h_亚洲乱码日产精品bd在线观看_中文视频一区视频二区视频三区_人禽杂交18禁网站免费 | 老司机免费在线视频_成人做爽爽爽爽免费国产软件_四虎在线免费观看_懂色av中文一区二区在_亚洲AV无码乱码日韩欧美_亚洲二三区_玖玖玖在线观看_婷婷成人基地 | 九色精品91_性做久久久久免费观看_日韩精品123区_国产精品久久9_国产精品色拉拉_国产精品wwwcom976con_亚洲高清资源在线观看_九一精品视频一区二区三区 | 精品国产亚洲第一区二区三区_gay取精潮喷10次_日韩国产在线看_国产一区二区三区网_九七视频在线观看_日韩在线中文字幕视频_高清无码专区av_av网站大全在线观看 | 成人avav_小货sao边洗澡边cao你动漫_亚洲一区二区在线看_欧美亚洲日韩在线综合_奇米第四色7777_国产又爽又大又黄A片图片_中文乱码字幕在线中文乱码_丰满少妇xxxx | 最新黄色在线_av网址免费观看_国内大量揄拍人妻精品視頻_一级做a爰片久久免费观看_国产亚洲午夜_亚洲视频你懂的_人人插97_久久国产精品久久精品国产 | 日韩在线播放第一页_亚洲在线高清_国产网战无遮挡_久久久久人妻精品一区蜜桃_两性色午夜视频免费播放_一二三四在线观看免费中文在线观看_gav成人网免费免播放器播放_久久精品水蜜桃AV综合天堂 | 人人干人人爱_亚洲ⅴ欧洲第一的日产AV_极品少妇啪啪高清免费_一及黄色片_91视频免费在观看_亚洲欧美日韩自偷自拍_91在线网站_人人爽人人爽人人爽人人片av | 欧美日韩高清一区二区_www.se天堂_99国产精成人午夜视频一区二区_亚洲国产高清在线一区二区三区_久久婷婷五月综合色99啪_国产婷婷色一区二区三区在线_小尤奈无码视频_a4yy欧美一区二区三区 | 91人人视频在线观看_国产69精品久久久久久久_午夜精品在线观看视频_免费国产小视频_亚洲精品久久久久58_婷婷午夜激情网_久草精品一区_亚洲精品国产精品国产 | 蜜臀免费av_国产十区_欧美激情内射喷水高潮_免费无码AV片在线观看软件_亚洲成色WWW久久网站夜月_一级特黄大片色_奇米777国产在线视频_亚洲精品中 | CHINA丰满人妻VIDEOSHD_国产午夜精品一区二区三区不卡_国产乱码精品一区二区三区av_国产精品亚洲а∨无码播放麻豆_国产精品亚洲一区在现观看_中文字幕肉感巨大的乳专区_夜夜操女人_亚洲国产一区二区三区在线观看 | 亚洲国产一区二区av_欧美日韩伊人_精品麻豆一卡2卡三卡4卡乱码_国产一二区不卡_扒开女人内裤猛进猛出免费视频_A级毛片高清免费视频在线播放_麻豆高清网站播放_高清av熟女一区 | 亚洲AV无码精品国产成人_香港成人A级毛片免费看_国产精品丝袜www爽爽爽_国产精品国产片_91不卡视频_久久精品成人一区二区三区_国产女人精品视频国产灰线_高跟丝袜AV专区 | 一夜新娘第三季高清免费观看_国产精品久久呻吟_91精品国产亚一区二区三区老牛_av色天天_1024在线观看国产天堂_国产一区二区在线观看视频_欧美精品成人在线_中文在线8资源库 | 在线观看国产一区二区三区_99久久久99久久国产片鸭王_欧美日韩激情网_91精品国产色综合久久_国产精品网在线观看_丰满少妇被猛烈进入流水_色偷偷AV男人的天堂京东热_中文在线a | 高清成人综合网_亚洲草草视频_国内一级大片_中文字幕第36页_国产视频精品久久_暗夜在线观看_强奷漂亮少妇高潮a片_亚洲国产精品午夜伦不卡 | 98超碰在线_日本A级作爱片金瓶双艳_国产精品亚洲一区二区三区喷水_青青草成人自拍_在线观看不卡av_JAPANESE日本熟妇喷水_91伊人_欧美一码二码三码无码 | 亚洲天堂一区二区三区四区_好爽好黄好刺激的视频_中文字幕一区二区三区av_在线黄色观看_提莫影院AV毛片入口_丰满的人妻HD高清日本_国产精妇在线观看第一区_福利国产 | 曰曰摸天天添天天湿_欧美日韩国产限制_av中文字幕一区_国产传媒av在线_亚洲一区二区三区四区av_国产精品露脸国语对白_久久无码中文字幕东京热_欧美野战 | 在线观看免费av网址大全_天天色天天看_裸体无码内射性性色AV_人牛交VIDE欧美XXXX_日韩在线黄色片_边做边流奶水的人妻_91人人精品_激情白浆 | 少妇把腿扒开让我舔18_午夜影院日韩_不卡无在线一区二区三区观_精品国产三级_日韩欧美精品在线观看_久久WWW免费人成人片_欧美黄色aaaa_久久福利视频一区 | 国产又色又爽又黄的视频在线观看_成全免费高清观看在线电视_97国产一区_久久久免费_亚州综合一区_偷拍自拍视频在线_亚洲高清免费观看在线视频_无码无套少妇毛多69xxx | 国产三线在线_国产91高清视频_亚洲一区二区三区视频播放_午夜精品久久久久久99热_www.成人18啪影院.com_精品视频国产一区_亚洲国产永久_精品自拍av 一夲道无码人妻精品一区二区_久久曰曰_51成人_成av在线_伊人久久情人综岁的合网18_国产日本一级二级三级_国产欧美一区二区精品仙草咪_欧美整片sss | 亚洲最新av网站_yy111111少妇影院_国产AV夜夜欢一区二区三区_成人1区2区_欧美日韩版_av中文无码乱人伦_亚洲精品深夜AV无码一区二区_国产麻豆 成人资源在线_无限动漫视频在线观看免费动漫_久久国产二区_美日韩一区二区_亚洲久久视频_少妇高潮呻吟在线观看_国产亚洲2021成人乱码_日本成人久久久 | 天天草网站_国产成人视屏_精品欧美一区二区在线观看欧美熟_国产午夜精品理论片a级探花_av在线播放网址_综合图区亚洲欧美另类图片_亚洲黄色录像片_国产午夜亚洲精品理论片大丰影院 | www.久久草.com_国产91在线高潮白浆在线观看_成人无码精品一区二区三区_久久高清亚洲_色婷婷狠狠18禁久久yyy☆_亚洲春色Aⅴ无码专区在线播放_av在线网站免费观看_少妇大叫太大太粗太爽了A片 | 国产真实夫妇对白视频_亚洲国产精品无码久久98_日韩一区二区三区四区在线_欧美秋霞_国产99久久久国产精品成人免费_国产免费av一区二区_国产JJZZJJZZ视频全部免费_蜜芽亚洲AV无码精品国产午夜 | 天天摸夜夜摸爽爽狠狠婷婷97_欧美一区_伊人插插插_日本护士体内SHE精2╳╳╳_日韩免费不卡视频_国产成人午夜精品福利视频_欧美不卡中文字幕一区二区_四虎4hu永久免费 | 中文字幕日韩精品一区二区_欧美一级久久久猛烈a大片_国产精品免费久久久久久久久久中文_欧美精产国品一二三区_久久a免费视频_亚洲AV永久无码精品天堂动漫_免费精品久久久久久久一区二区_超清AV在线播放不卡无码 | 在线观看免费av网址大全_天天色天天看_裸体无码内射性性色AV_人牛交VIDE欧美XXXX_日韩在线黄色片_边做边流奶水的人妻_91人人精品_激情白浆 | 强乱中文字幕亚洲精品_亚洲网站观看_台湾无码AV一区二区三区_北条麻妃在线_国产在线一区二区三区视频_日韩精品无码视频免费专区_亚洲精品入口a级_亚洲日日摸夜夜夜夜夜爽小说 | 77777日本少妇久7黄绝片_国产精品天天狠天天看_亚洲中文字幕在线网址_国产亚洲一区二区手机在线观看_午夜影院0606_日日碰狠狠躁久久躁蜜桃_日韩免费视频播放_日本理论片午午伦夜理片2021 热99欧美_久久久精品国产sm调教网站_成人亚洲在线观看_国产一区二区中文字幕免费看_最近中文字幕免费MV在线视频_japanese在线看_色视频www在线播放国产人成_97青娱乐 337P中国人体啪啪_亚洲另类色区欧美日韩图片_成人视频在线观看_国产视频九九_秋霞鲁丝片无码一区二区_欧洲亚洲另类一区在线观看_亚洲成人高清av_亚洲国产成人精品无码区2021 | 成年女人午夜毛片免费视频_日韩在线观看视频一区二区三区_一级免费播放_日本草逼视频_亚洲欧美日韩国产成人一区_麻豆最新网址_国产精品久久久久久久白丝_免费人成自慰网站 | 天天做天天爱天天操_日日噜噜大屁股熟妇_久草免费手机视频_国产国产成人久久精品_国产主播精品_久久午夜无码人妻鲁丝片午夜精品_一性一交一伦一色一按—摩_中文字幕成人网 | 欧美精品在线观看一区_67194成人手机在线_亚洲精品中文字幕乱码4区_国内高清久久久久久_你好星期六最新一期免费观看_国产精品三区www17con_啊v在线看_蜜桃视频在线免费播放 | 一级看片免费视频囗交_亚洲日韩在线中文字幕线路2区_国产一级片免费_久久精品a一级国产免视看成人_成人超碰在线观看_亚洲香蕉视频综合在线_久久毛片免费观看_2019年中文字字幕在线看不卡 | 一本大道久久精品_国产网红无码精品视频_国产强伦姧人妻毛片_国产香蕉一区二区在线网站_天天舔日日操_最近中文字幕一区_精品无码中文字幕不卡_亚洲欧美校园 | 日日插夜夜爽_另类一区_日本伊人精品一区二区三区观看方式_婷婷精品进入_成人软件在线观看_大地资源在线观看免费高清动漫_成人黄色av片_毛片一级 | 日韩中文字幕二区2017_精品人伦一区二区三区蜜桃视频_色爱区成人综合网_爱爱精品_欧美日本性视频_亚洲三级片福利视频_456成年女人免费视频_99久久精品久久久久久ai换脸 | 在线观看a级_国产高清成人av片_免费能直接在线观看黄的视频_色成人网站www永久免费观看_日本成人黄色_初毛初精小男生GV网站_亚洲资源网_久久久久久久久久毛片 |