Docker容器無法被stop or kill問題的解決方法
Docker version 1.13.1
問題過程
某環(huán)境一個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 等命令處理后,容器立馬自動重啟
立即查看容器,運行時間為: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,即不會自動重啟
如果需要更新運行中容器的restart策略,可以使用該命令:docker update –restart=no my-container
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
程序員之間神奇的問題解決方式
你是否出現(xiàn)過這種場景:
- 百思不得其解的問題,當(dāng)走到同事面前,剛把問題說清楚,自己就恍然大悟了。
- 問題明明很簡單,但程序運行就是出問題,然后找個同事幫忙檢查下基礎(chǔ)配置,自己又頓悟了。
這次我屬于第一種,剛把問題說完,立馬想起:擦,是容器編排工具Rancher在做調(diào)度,容器掛了之后會自動重啟。
登錄rancher一看,果然如此,”烏龍”問題。雖這次不是問題,但Docker確實有無法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異常時將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。列舉幾個場景:
- 容器以非正常狀態(tài)碼終止(如應(yīng)用內(nèi)存不足導(dǎo)致終止)
- 容器被正常 stopped,然后機器重啟或Docker服務(wù)重啟
- 容器在宕機在正常運行,然后重啟機器或Docker服務(wù)重啟
以上情況always側(cè)露都會restart容器,但是如果是 on-failure和no策略,機器被重啟之后容器將無法restart。
unless-stopped
unless-stopped 和 always 基本一樣,只有一個場景 unless-stopped有點特殊:
如果容器正常stopped,然后機器重啟或docker服務(wù)重啟,這種情況下容器將不會被restart
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Docker stop停止/remove刪除所有容器
- docker容器無法stop的解決辦法
- 解決docker啟動容器失敗:cannot?access‘/docker-entrypoint-initdb.d/‘:Operation?not?permitted
- pycharm遠(yuǎn)程連接docker容器的操作流程
- pycharm使用docker容器開發(fā)的詳細(xì)教程
- docker swarm如何在指定的node上運行指定的容器
- 在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個Docker容器集群的方法
- Docker無法stop或者rm指定容器問題解決方案
相關(guān)文章
基于docker部署skywalking實現(xiàn)全鏈路監(jiān)控功能
這篇文章主要介紹了基于docker部署skywalking實現(xiàn)全鏈路監(jiān)控,skywalking提供了在很多不同的場景下用于觀察和監(jiān)控分布式系統(tǒng)的方式,文中給大家介紹如何快速部署skywalking全鏈路監(jiān)控,感興趣的朋友一起看看吧2022-03-03
windows下Docker部署Flask的詳細(xì)教程
這篇文章主要介紹了windows下Docker部署Flask的教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
深入理解 Docker 數(shù)據(jù)卷(Data Volume)
本文詳細(xì)介紹了Docker數(shù)據(jù)卷(DataVolume)的概念、作用、使用命令、掛載方式以及最佳實踐,數(shù)據(jù)卷是Docker中實現(xiàn)數(shù)據(jù)持久化和共享的關(guān)鍵機制之一,通過本文的學(xué)習(xí),讀者可以更好地掌握數(shù)據(jù)卷的使用方法,從而在容器化應(yīng)用中進(jìn)行有效的數(shù)據(jù)管理2024-11-11
Dockerfile如何使用alpine系統(tǒng)制作haproxy鏡像
這篇文章主要介紹了Dockerfile如何使用alpine系統(tǒng)制作haproxy鏡像問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
Docker構(gòu)建Maven+Tomcat基礎(chǔ)鏡像的實現(xiàn)
這篇文章主要介紹了Docker構(gòu)建Maven+Tomcat基礎(chǔ)鏡像的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
給docker創(chuàng)建的elasticsearch容器添加密碼簡單步驟
在使用Elasticsearch(ES)Docker容器時,有時需要設(shè)置密碼來保護(hù)數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關(guān)于給docker創(chuàng)建的elasticsearch容器添加密碼的簡單步驟,需要的朋友可以參考下2024-02-02
Idea通過docker compose?發(fā)布項目的過程
這篇文章主要介紹了Idea結(jié)合docker-compose發(fā)布項目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08

