Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause
前言
本講是從Docker系列講解課程,單獨抽離出來的一個小節(jié),重點介紹:Docker容器生命周期,雖然這知識點,平時開發(fā)很少用到,但是在運維過程中,看到相關(guān)服務(wù)狀態(tài),要了解這些狀態(tài)具體是什么含義,我們一起來學習一下吧!
概述
一葉障目,不見泰山,我們就先從一葉,一葉的小細節(jié)開始吧,最后自然可以窺見泰山全貌,直至最后消滅容器,一切狀態(tài)化為灰飛煙滅。
一、生命周期相關(guān)指令
1.docker kill和docker stop的區(qū)別與聯(lián)系
相同點:兩者都是停掉容器,并把容器狀態(tài)指定到stopped。
不同點:被kill殺死容器,進入stopped狀態(tài)被重新start后,會開啟新的進程號;被stop停掉的容器,再次被重新start后,進程號不變,還是原來的。
kill命令比較生猛,不管容器死活,直接給系統(tǒng)發(fā)送SIGKILL的系統(tǒng)信號強行kill掉進程,就是要用kill -9干掉容器;
stop比較溫柔,先給容器發(fā)送一個TERM信號,給容器充足時間(默認10秒)保存數(shù)據(jù),讓容器自動安全停止運行,超時后再給系統(tǒng)發(fā)送SIGKILL的系統(tǒng)信號強行kill掉進程,最后轉(zhuǎn)變?yōu)閟top狀態(tài)。
使用docker stop -t [s, default 10],可調(diào)整超時時間(docker stop -t 20 mynginx)
2.docker pause/ unpause 暫停和取消暫停(不太常用)
pause 暫停容器中所有的進程,狀態(tài)為Pause(暫停對外提供服務(wù))
unpause 取消暫停,將容器恢復為Up上線狀態(tài)
使用場景:在各個容器之間調(diào)試時使用。
語法:docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker pause mynginx
二、生命周期演示
更好的展示效果,先停掉Docker服務(wù)
#service docker stop或者#systemctl stop docker
1.docker create 狀態(tài)為create創(chuàng)建狀態(tài)
docker create tomcat:8.5.46-jdk8-openjdk #創(chuàng)建容器(并沒有啟動) docker ps #查看容器列表(只顯示已啟動的) docker ps -a #查看所有容器(可以看到狀態(tài)是Created的容器)
發(fā)現(xiàn):create命令,創(chuàng)建容器后,#docker ps 并看不到該容器,因為ps命令不帶任何任何參數(shù)時,只顯示狀態(tài)為Up的容器。此時的容器狀態(tài)是Created。
2.docker start 狀態(tài)為up上線狀態(tài)
docker start bf88214f5f6d #根據(jù)容器id啟動容器 docker ps #可以看到容器狀態(tài)為up,已上線狀態(tài)
發(fā)現(xiàn):start命令后,容器狀態(tài)由Created變?yōu)閁p
3.docker pause/unpause 狀態(tài)為pause暫停/上線狀態(tài)
docker pause bf88214f5f6d #根據(jù)容器id啟動容器 docker ps #可以看到容器狀態(tài)為up(pause),已上線(暫停)狀態(tài) docker unpause bf88214f5f6d #取消暫停容器 docker ps
發(fā)現(xiàn):pause命令后,容器狀態(tài)從Up變?yōu)镻aused;unpause命令后,狀態(tài)又切回Up狀態(tài)。
4.docker stop 停掉容器
docker stop bf88214f5f6d docker ps -a
發(fā)現(xiàn):stop命令后,容器狀態(tài)從Up變?yōu)镋xited,退出狀態(tài)。
5.docker rm -f 強制刪除容器
docker rm -f bf88214f5f6d docker ps -a
發(fā)現(xiàn):容器被rm命令移除后,docker ps -a 看不到任何容器。皮之不存毛將焉附?
三、泰山圖,全貌
下圖中,橢圓代表容器的狀態(tài),方塊代表狀態(tài)切換過程中,所產(chǎn)生的事件。
圖片描述,形象具體,以橢圓為中心,仔細對照學習一下吧!
注:圖片中左下有個菱形(restart policy should restart?)觸發(fā)該事件的源頭一般是,容器內(nèi)存溢出等異常。該策略通過 docker run --restart=always時來控制;也可以在docker編排yml文件中配置。
尾言
本講內(nèi)容是從 Docker入門到進階里面抽離出來的內(nèi)容,從而使原文更加有序、重點突出。
到此這篇關(guān)于Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause的文章就介紹到這了,更多相關(guān)docker kill和docker stop的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解如何在Ubuntu系統(tǒng)中安裝docker
這篇文章主要為大家詳細介紹了在Ubuntu操作系統(tǒng)上安裝Docker的步驟,以便我們可以開始使用Docker來構(gòu)建和運行容器化應(yīng)用程序,希望對大家有所幫助2024-03-03Docker安裝配置ES(elasticsearch)步驟詳解
這篇文章主要給大家介紹了關(guān)于Docker安裝配置ES(elasticsearch)的相關(guān)資料,本文主要介紹了如何在指定目錄下安裝ES和Kibana,以及如何用IK分詞器進行分詞,需要的朋友可以參考下2024-10-10基于Docker版本squid搭建代理服務(wù)器的過程詳解
這篇文章主要介紹了基于Docker版本squid搭建代理服務(wù)器的配置方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下本文給大家介紹的非常詳細2024-03-03Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫的腳本
這篇文章主要介紹了Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫?,編寫shell文件給出一個備份的范例,在Linux添加定時任務(wù),通過下列命令來檢測并安裝這個服務(wù),需要的朋友可以參考下2022-09-09