Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause
前言
本講是從Docker系列講解課程,單獨(dú)抽離出來的一個小節(jié),重點(diǎn)介紹:Docker容器生命周期,雖然這知識點(diǎn),平時開發(fā)很少用到,但是在運(yùn)維過程中,看到相關(guān)服務(wù)狀態(tài),要了解這些狀態(tài)具體是什么含義,我們一起來學(xué)習(xí)一下吧!
概述
一葉障目,不見泰山,我們就先從一葉,一葉的小細(xì)節(jié)開始吧,最后自然可以窺見泰山全貌,直至最后消滅容器,一切狀態(tài)化為灰飛煙滅。
一、生命周期相關(guān)指令
1.docker kill和docker stop的區(qū)別與聯(lián)系
相同點(diǎn):兩者都是停掉容器,并把容器狀態(tài)指定到stopped。
不同點(diǎn):被kill殺死容器,進(jìn)入stopped狀態(tài)被重新start后,會開啟新的進(jìn)程號;被stop停掉的容器,再次被重新start后,進(jìn)程號不變,還是原來的。
kill命令比較生猛,不管容器死活,直接給系統(tǒng)發(fā)送SIGKILL的系統(tǒng)信號強(qiáng)行kill掉進(jìn)程,就是要用kill -9干掉容器;
stop比較溫柔,先給容器發(fā)送一個TERM信號,給容器充足時間(默認(rèn)10秒)保存數(shù)據(jù),讓容器自動安全停止運(yùn)行,超時后再給系統(tǒng)發(fā)送SIGKILL的系統(tǒng)信號強(qiáng)行kill掉進(jìn)程,最后轉(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 暫停容器中所有的進(jìn)程,狀態(tài)為Pause(暫停對外提供服務(wù))
unpause 取消暫停,將容器恢復(fù)為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 并看不到該容器,因?yàn)閜s命令不帶任何任何參數(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 強(qiáng)制刪除容器
docker rm -f bf88214f5f6d docker ps -a

發(fā)現(xiàn):容器被rm命令移除后,docker ps -a 看不到任何容器。皮之不存毛將焉附?
三、泰山圖,全貌
下圖中,橢圓代表容器的狀態(tài),方塊代表狀態(tài)切換過程中,所產(chǎn)生的事件。

圖片描述,形象具體,以橢圓為中心,仔細(xì)對照學(xué)習(xí)一下吧!
注:圖片中左下有個菱形(restart policy should restart?)觸發(fā)該事件的源頭一般是,容器內(nèi)存溢出等異常。該策略通過 docker run --restart=always時來控制;也可以在docker編排yml文件中配置。
尾言
本講內(nèi)容是從 Docker入門到進(jìn)階里面抽離出來的內(nèi)容,從而使原文更加有序、重點(diǎn)突出。
到此這篇關(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)文章
Ubuntu24.04LTS在線安裝Docker引擎的詳細(xì)過程
本文介紹了在Ubuntu 24.04 LTS系統(tǒng)上安裝Docker引擎的步驟,包括卸載舊版本、設(shè)置Docker APT倉庫、安裝最新版或指定版本的Docker,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-11-11
docker啟動報(bào)錯問題OCI runtime create failed: c
這篇文章主要介紹了docker啟動報(bào)錯問題OCI runtime create failed: container_linux.go:380: starting container process,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
如何解決Docker-Compose內(nèi)置DNS負(fù)載均衡失效問題
這篇文章主要介紹了如何解決Docker-Compose內(nèi)置DNS負(fù)載均衡失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程
這篇文章主要為大家介紹了docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法
這篇文章主要介紹了Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-11-11
使用 Docker 在 Ubuntu 上部署 FTP 服務(wù)器
本文詳細(xì)介紹了如何在Ubuntu系統(tǒng)上通過Docker部署FTP服務(wù)器的步驟,包括安裝Docker、拉取vsftpd鏡像以及運(yùn)行FTP容器等,通過這些步驟,用戶可以在提供的免費(fèi)云服務(wù)器上快速搭建起一個安全高效的FTP服務(wù),適合小型項(xiàng)目或個人使用,感興趣的朋友跟隨小編一起看看吧2024-10-10

