真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Docker容器無法被stoporkill問題的解決方法

Docker version 1.13.1

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都建筑動畫等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致認(rèn)可!

問題過程

某環(huán)境一個(gè)MySQL容器無法被stop or kill or rm

sudo docker ps | grep mysql 查看該容器

7844250860f8 mysql:5.7.22  "/.r/r docker-entr..."  41 minutes ago  Up 8 minutes  r-dlrel-mysql-1-66df8f33

使用docker stop / docker kill / docker rm -f 等命令處理后,容器立馬自動重啟

立即查看容器,運(yùn)行時(shí)間為:Up Less than a second,說明容器立馬啟動了

7844250860f8 mysql:5.7.22  "/.r/r docker-entr..."  42 minutes ago Up Less than a second  r-dlrel-mysql-1-66df8f33

kill該容器對應(yīng)的物理進(jìn)程,依然自動重啟

獲取物理進(jìn)程方式:1.docker inspect中的 State.Pid字段為物理進(jìn)程ID; 2.ps 命令

查看容器restart policy,策略為no,即不會自動重啟

如果需要更新運(yùn)行中容器的restart策略,可以使用該命令:docker update –restart=no my-container

"RestartPolicy": {
  "Name": "no",
  "MaximumRetryCount": 0
},

程序員之間神奇的問題解決方式

你是否出現(xiàn)過這種場景:

  • 百思不得其解的問題,當(dāng)走到同事面前,剛把問題說清楚,自己就恍然大悟了。
  • 問題明明很簡單,但程序運(yùn)行就是出問題,然后找個(gè)同事幫忙檢查下基礎(chǔ)配置,自己又頓悟了。

這次我屬于第一種,剛把問題說完,立馬想起:擦,是容器編排工具Rancher在做調(diào)度,容器掛了之后會自動重啟。

登錄rancher一看,果然如此,”烏龍”問題。雖這次不是問題,但Docker確實(shí)有無法stop的問題,資料也很多。

拓展閱讀: Docker Restart Policy

解決過程中了解了很多Docker Restart Policy知識和Bug,這篇文章寫的簡單易懂:Ensuring Containers Are Always Running with Docker's Restart Policy

這里僅做下記錄,學(xué)習(xí)下Docker的四種Restart Policy。

no

no是默認(rèn)策略,在任何情況下都不會restart容器

on-failure

on-failure表示如果容器 exit code異常時(shí)將restart,如果容器exit code正常將不做任何處理。

sudo docker run -d --name testing_restarts --restart on-failure:5 testing_restarts
85ff2f096bac9965a9b8cffbb73c1642bf7b64a2173bbd145961231861b95819

on-failure[:max-retries],max-retries表示最大重啟次數(shù)。

on-failure的好處是:如果容器以正常exit code終止,將不會 restart

always

無論容器exit code是什么,都會自動restart。列舉幾個(gè)場景:

  1. 容器以非正常狀態(tài)碼終止(如應(yīng)用內(nèi)存不足導(dǎo)致終止)
  2. 容器被正常 stopped,然后機(jī)器重啟或Docker服務(wù)重啟
  3. 容器在宕機(jī)在正常運(yùn)行,然后重啟機(jī)器或Docker服務(wù)重啟

以上情況always側(cè)露都會restart容器,但是如果是 on-failure和no策略,機(jī)器被重啟之后容器將無法restart。

unless-stopped

unless-stopped 和 always 基本一樣,只有一個(gè)場景 unless-stopped有點(diǎn)特殊:

如果容器正常stopped,然后機(jī)器重啟或docker服務(wù)重啟,這種情況下容器將不會被restart

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前題目:Docker容器無法被stoporkill問題的解決方法
網(wǎng)址分享:http://weahome.cn/article/gescps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部