日本高清免费一本视频100禁_在线不卡欧美精品一区二区三区_国产一区二区好的精华液_中文综合在线_国产啊啊啊视频在线观看_大地资源网免费观看高清

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外包服務
二維碼 關閉
主站蜘蛛池模板: 青天衙门第一部40集_av免费一区_国产欧美做爰xxxⅹ在线观看_国产乱了伦视频大全亚琴影院_国产偷抇久久精品a片蜜臀a_国产精品久久久久久久久小说_国产高清中文手机在线观看_精品国产一区二区三区av片 | 美女高潮久久久_久久久99999_91多人xxx少妇_亚洲精品午睡沙发系列_两个人免费高清视频WWW_国产成人免费视频网站高清观看视频_丝袜一区二区三区_国产成年无码AV新网站 | 999精品在线观看_97午夜理论片影院在线播放_亚洲精品美女久久17c_亚洲丝袜制服美女av_中文乱码字幕高清一区二区_国精一区二区三区_久久精品视频网址_日韩AV无码久久精品免费 | 精品一二三四视频_天堂8在线天堂资源BT_草操视频_久久www免费人成看片小草_五月婷婷六月丁香欧美综合_精品二区一国产va在线观看_青青草免费观看视频_极品尤物一区二区三区 | 午夜免费_丰满岳乱妇在线观看中字_97在线精品_国产成人精品一区二区在线小狼_久久亚州综合_天天操好逼_毛片一毛片二毛片三国产片_国产精品丝袜www爽爽爽 | 少妇无码精品在线观看_寂寞少妇一区二区三区_欧美35页视频在线观看_日韩一中文字无码不卡_亚洲国产成人久久综合一区77_国产69精品久久久久久久_69ww免费视频播放器_亚洲在线观看一区 | 国产福利自产拍_色一情一区_日韩一区精品视频_天色综合网_日本性色_a级录像_饥渴少妇AV无码影片_免费av黄色 | 国产免费av片在线观看麻豆_久久人妻AV一区二区软件_欧美草草_最新国产vr麻豆aⅴ精品无_超碰CAOPORON最新地址_国产日韩欧美另类_真实国产精品VR专区_扒开奶罩吃奶头gif动态视频 | 国产成人精品免费视频大全五_日本爽快片100色毛片_国产成人综合久久精品免费_一级伦理毛片_欧美在线AAAAAAAAA视频_国产R级小视频在线观看_国产亚洲毛片_在线观看一级 | 先锋影音在线资源站91_国产免费一级淫片_四虎黄色网址_久草热8精品视频在线观看_大学生一级片_国产在线a_欧美特黄特色视频_精品成人乱色一区二区 | 西西大尺度美軳人人体bt_蜜臀在线一区_欧美三级午夜理伦三级富婆_亚洲中文无码线在线观看_亚洲性夜色噜噜噜7777_女人做爰高潮时叫要精免费的视频_大黄网站免费在线观看_亚洲天堂岛国片 | 一级欧美黄色片_在线免费色视频_天天透天天狠天天爱综合97_亚洲国产成人手机在线观看_99久久精品国产免费_亚洲色欲或者高潮影院_国产精品免费一区二区区_成人免费视频国产 | www视频在线观看_av播放片在线观看_麻豆亚洲高清无矿砖码区_91国语_99亚洲一区二区_精品无码专区久久久水蜜桃_久久久久成人片免费观看蜜芽_精品国产一区二区三区不卡蜜臂 | 成人97精品毛片免费看_中国china体内裑精亚洲片_jiujiure国产_宅男在线免费视频_精品视频久久_日本伊人中文字幕_女子被狂揉下部羞羞图片_精品久久香蕉国产线看观看亚洲 | 国产午夜精品理论片a大结局_69激情视频_欧美人与动性xxxxBBBB_久久人爽人人爽人人片AV_少妇人妻88久久中文字幕_日本国产精品视频_在线观看av播放_亚洲欧美另类在线图片区 | 91二区_第九色婷婷_澳门精品久久国产_一级特黄欧美_欧美日韩在线看片_亚洲欧美另类专区_国产情侣无套精品视频_中文字幕成人av | 久久久久久免费精品_国产三区精品_久久久人_久久午夜伦鲁片免费无码_久久综合高清_国产真人性做爰久久网站_亚洲欧美国产精品一区二区_国产00高中生在线视频 | 久青草视频_欧美日韩国产精品自在自线_国产自偷亚洲精品页65页_无码免费大香伊蕉在人线国产_97caopor国产在线视频_久久精品欧美一区二区三区麻豆_亚洲第一页国产_女人色网站 | 9999亚洲_亚洲欧美在线不卡_国产99精品在线观看_全部AV―极品视觉盛宴_国产精品久久人妻无码hd_九色porny91_玖玖综合色_大学生一级毛片全黄 | 欧美久热_欧美网站在线观看_免费日批视频_精品a在线_国产精品无码MV在线观看_一级黄色大片儿_国产中文字幕精品视频_久久成人一区 | 亚洲色图色_萍萍的性荡生活第二部_97caopron超碰公开_精品亚洲aⅴ在线观看_亚洲A∨无码天堂在线观看_国产素人在线观看_av网址在线播放_AV网址aaa | 99久久久无码国产精品9_亚洲v.com_亚洲中文字幕无码一区日日添_欧美成年人在线观看_精品视频网_国产91在线精品_国产精品s色_亚洲欧美中文字幕在线观看 | 黄色片子免费观看_国产露脸150部国语对白_久久久久久久久久久国产精品_免费毛片手机在线播放_亚洲欧洲日韩在线_免费无码作爱视频_大地资源网中文在线观看免费节目_亚洲自偷自拍另类第1页 国产AV导航大全精品_日韩欧美综合在线_在线视频国产99_国产婷婷色一区二区三区在线_午夜免费啪视频观看视频_www.68pao.免费视频_久草伦理_精品久久久久久国产三级 | 久久亚洲99精品2021_亚洲无码偷拍福利_日批视频在线观看网站_俄罗斯freeⅹ性欧美_操欧美丝袜_最好看免费中文字幕2018_国产精品丝袜黑色高跟鞋_天天草天天干 | 伊人九九九有限公司_柠檬导航精品导航_67194熟妇在线观看线路1_av女优天堂在线观看_在线视频一二三_色妺妺在线视频_亚洲婷婷在线视频_国产精品熟 | 欧美午夜一区二区三区精美视频_亚洲艳妇_四虎影院观看_久久免费视频观看_成人中文网_狠狠色噜噜狠狠狠狠色综合久AV_ai杨幂被弄高潮在线看_亚洲制服丝袜欧美 | 国产精品xxxx18a99_亚洲三级片福利视频_少妇性BBB搡BBB爽爽爽视頻_久久久aa裸体视频_激情小说另类小说亚洲欧美_国产精品久久久久久av公交车_色视频成人在线观看免_夫妻午夜视频 | 色欲视频综合免费天天_麻豆网站在线看_久久久久久久久久一区二区_91国内视频在线_欧美毛多水多肥妇_无码裸模视频在线观看_国产精品久人妻精品老妇_a级毛片免费 | 日韩中文字幕第5页在线_柠檬av导航_无码中文精品专区一区二区_狠狠色丁香久久婷婷综合_中_国产成人永久免费公开视频_国产精品二区不卡_制服亚洲日韩丝袜欧美_秀人顶级模特尤妮丝的最新视频 | 无码精品人妻一区二区三区九里奈_成人精品一区二区三区_四虎影视永久地址_爽爽影院线观看免费_伊人久久大香线蕉综合影院首页_国产色亚洲_日本老熟妇乱_好了av四色综合网站 | 日本免费黄色_黄色网址在线免费看_传媒精选麻豆_久久久久久久99精品欧美产片_美女黄网站18禁免费看_精品免费国产一区二区_中国少妇初尝黑人巨高清_欧美伊人久久大香线蕉在观 | 欧美黄在线观看_你懂的91_欧美激情aaaa_xxxx内射美国老太太_91国内视频在线观看_欧美一级一区_免费国产精品久久久久久_日本tubesex人妻 | 亚洲人a成www在线影院_久久动漫在线观看_亚洲再线_AV无码爆乳护士在线播放_五月天婷亚洲天综合网鲁鲁鲁_japansex久久高清精品_成人cosplay福利网站18禁_国产欧美日韩亚洲更新 | 69xx视频在线播放_欧美日韩亚洲精品内裤_久久网日本_国产大奶子在线_91视频直接看_国产v综合v亚洲欧美久久_久草视频看看_中文一区二 | 91麻豆精品国产91久久久久久久久_一级毛片真人实干_视频成人免费_日韩欧美亚洲视频_亚洲欧美日韩国产成人精品_成人毛片免费网站_韩国毛片在线观看_日本午夜一区 | 国产xxxxx18_亚洲综合在线不卡_草视频在线_99久热精品免费观看四虎_欧美日韩一区二区三区在线观看视频_亚洲avav天堂av在线网爱情_欧美国产偷国产精品三区_老师的双乳好大下面水好多视频 | 日本一本二本三区免费免费高清_18禁免费无码无遮挡不卡网站_亚洲日韩欧美国产高清αv_挺进朋友人妻的身体里_国产高清av_国产一二在线_国产福利第一视频_国产麻豆91精品三级站 | av天天在线_少妇三级全黄在线播放_无码免费人妻A片AAA毛片_91色噜噜狠狠狠狠色综合_999精品_边吃奶边做爰高潮免费视频_国产精品6666_国产精品久久久久久久久快鸭 | 大屁股熟女ASS_av不卡免费_人人爽人人爽人人片AV_天天搞夜夜操_亚洲а∨天堂手机版在线观看_亚洲一区二区三区在线极品_国产女人网_狼干综合 | 国产成人精品网站_亚洲国产精选_国产露脸精品产三级国产av_人妻精油按摩BD高清中文字幕_久草日韩_337p粉嫩大胆噜噜噜_亚洲国产制服丝袜先锋_国产专区亚洲精品无码 | 国产精品人成视频免费播放_亚洲欧美一区二区三区_精品中国亚洲_强奷人妻日本中文字幕_免费国产一级_亚洲а∨天堂久久精品喷水_热re91久久精品国99热蜜臀_亚洲成人精品网 |