Docker | Docker技術(shù)基礎(chǔ)梳理(三) - 容器生命周期管理

發(fā)布時(shí)間:2024-03-15
云計(jì)算
什么是容器?
容器(container):容器是一種輕量級(jí)、可移植、并將應(yīng)用程序進(jìn)行的打包的技術(shù),使應(yīng)用程序可以在幾乎任何地方以相同的方式運(yùn)行,docker將鏡像文件運(yùn)行起來后,產(chǎn)生的對(duì)象就是容器。容器相當(dāng)于是鏡像運(yùn)行起來的一個(gè)實(shí)例且容器具備一定的生命周期。
docker容器和虛擬機(jī)的區(qū)別
相同點(diǎn):
容器和虛擬機(jī)一樣,都會(huì)對(duì)物理硬件資源進(jìn)行共享使用。
容器和虛擬機(jī)的生命周期比較相似(創(chuàng)建、運(yùn)行、暫停、關(guān)閉等等)。
容器中或虛擬機(jī)中都可以安裝各種應(yīng)用,如redis、mysql、nginx等。也就是說,在容器中的操作,如同在一個(gè)虛擬機(jī)(操作系統(tǒng))中操作一樣。
同虛擬機(jī)一樣,容器創(chuàng)建后,會(huì)存儲(chǔ)在宿主機(jī)上:linux上位于/var/lib/docker/containers下
不同點(diǎn):
虛擬機(jī)的創(chuàng)建、啟動(dòng)和關(guān)閉都是基于一個(gè)完整的操作系統(tǒng)。一個(gè)虛擬機(jī)就是一個(gè)完整的操作系統(tǒng)。而容器直接運(yùn)行在宿主機(jī)的內(nèi)核上,其本質(zhì)上以一系列進(jìn)程的結(jié)合。
容器是輕量級(jí)的,虛擬機(jī)是重量級(jí)的。首先容器不需要額外的資源來管理(不需要hypervisor、guest os),虛擬機(jī)額外更多的性能消耗;其次創(chuàng)建、啟動(dòng)或關(guān)閉容器,如同創(chuàng)建、啟動(dòng)或者關(guān)閉進(jìn)程那么輕松,而創(chuàng)建、啟動(dòng)、關(guān)閉一個(gè)操作系統(tǒng)就沒那么方便了。
也因此,意味著在給定的硬件上能運(yùn)行更多數(shù)量的容器,甚至可以直接把docker運(yùn)行在虛擬機(jī)上。
容器的生命周期管理
先來看一張容器生命周期示意圖:
下面咸魚會(huì)對(duì)容器管理的部分命令簡要學(xué)習(xí):
容器創(chuàng)建(docker create)
命令格式:
docker create [參數(shù)] 鏡像名稱[容器執(zhí)行命令][執(zhí)行命令時(shí)需要提供的參數(shù)]
常用參數(shù):
-t分配一個(gè)虛擬終端
-i提供一個(gè)模擬輸入,不提供則無法輸入默認(rèn)命令
--name為創(chuàng)建好的容器提供一個(gè)容器名,不提供的話隨機(jī)分配一個(gè)
容器啟動(dòng)(docker start)
啟動(dòng)一個(gè)或多個(gè)容器。
命令格式:docker start [參數(shù)] 容器[容器..]
常用參數(shù):
-a將當(dāng)前的輸入/輸出連接到容器
-i將當(dāng)前的輸入連接到容器上
容器創(chuàng)建并啟動(dòng)(docker run)
命令格式:
docker run [參數(shù)] 鏡像 [容器執(zhí)行命令] [執(zhí)行命令提供的參數(shù)]
常用參數(shù):
-t分配一個(gè)虛擬終端
-i保持輸入打開
-d容器后臺(tái)運(yùn)行,并打印容器id
--rm容器結(jié)束后自動(dòng)刪除容器
注意:因?yàn)槲覀儗W(xué)習(xí)docker主要還是為我們之后基于docker的python開發(fā)服務(wù)的,所以關(guān)于docker run 以及 docker create/start 的一些參數(shù)的具體的區(qū)別就不在文章里贅述,有疑問的朋友可以參考官方文檔,當(dāng)然也歡迎和咸魚在留言區(qū)討論,大家在這里簡單記兩個(gè)公式就好:
dockerrun=dokercreate dockerstart-a
dockerrun-d=dockercreate dockerstart
這里咸魚推薦大家使用docker run -dti來啟動(dòng)所需容器。
容器暫停(docker pause/unpause)
docker pause 暫停一個(gè)或多個(gè)容器
docker unpause 啟動(dòng)一個(gè)或多個(gè)暫停中的容器
命令格式:
docker pause/unpause 容器[容器..]
容器關(guān)閉(docker stop)
關(guān)閉一個(gè)或多個(gè)容器。
docker stop 關(guān)閉一個(gè)或多個(gè)容器
命令格式:
docker stop 容器[容器..]
常用參數(shù):
-t關(guān)閉前的等待時(shí)間,默認(rèn)是10秒
容器終止(docker kill)
強(qiáng)制并立即關(guān)閉一個(gè)或多個(gè)處于暫停或運(yùn)行狀態(tài)的容器。
命令格式:docker kill [參數(shù)] 容器[容器..]
常用參數(shù):
-s 指定發(fā)給容器的關(guān)閉信號(hào),默認(rèn)為“kill”
容器重啟(docker restart)
重啟一個(gè)或多個(gè)處于運(yùn)行狀態(tài)、暫停狀態(tài)、關(guān)閉狀態(tài)或創(chuàng)建狀態(tài)的容器。
命令格式:
docker restart [參數(shù)] 容器[容器..]
常用參數(shù):
-t關(guān)閉前的等待時(shí)間,默認(rèn)是10秒,實(shí)則是關(guān)閉前的等待時(shí)間
容器刪除(docker container rm / docker rm )
命令格式:docker container rm [參數(shù)] 容器[容器..]
常用參數(shù):
-f強(qiáng)制刪除
-v刪除容器的同時(shí)刪除容器的數(shù)據(jù)卷
docker kill 和 docker stop 區(qū)別
在上面關(guān)于docker容器生命周期管理中stop 和 kill 都是關(guān)閉容器,但是其中的kill是怎么實(shí)現(xiàn)強(qiáng)制殺死運(yùn)行中的容器的呢?
這里需要說明下關(guān)linux下關(guān)于終止進(jìn)程的信號(hào):sigterm 和 sigkill
sigkill信號(hào):無條件終止進(jìn)程信號(hào)。進(jìn)程接收到該信號(hào)會(huì)立即終止,不進(jìn)行清理和暫存工作。該信號(hào)不能被忽略、處理和阻塞,它向系統(tǒng)管理員提供了可以殺死任何進(jìn)程的方法。
sigterm信號(hào):程序終結(jié)信號(hào),可以由kill命令產(chǎn)生。與sigkill不同的是,sigterm信號(hào)可以被阻塞和終止,以便程序在退出前可以保存工作或清理臨時(shí)文件等。
docker stop 會(huì)先發(fā)出sigterm信號(hào)給進(jìn)程,告訴進(jìn)程即將會(huì)被關(guān)閉。在-t指定的等待時(shí)間過了之后,將會(huì)立即發(fā)出sigkill信號(hào),直接關(guān)閉容器。
docker kill 直接發(fā)出sigkill信號(hào)關(guān)閉容器。但也可以通過-s參數(shù)修改發(fā)出的信號(hào)。
docker restart 中同樣可以設(shè)置 -t 等待時(shí)間,當(dāng)?shù)却龝r(shí)間過后會(huì)立刻發(fā)送sigkill信號(hào),直接關(guān)閉容器。
因此會(huì)發(fā)現(xiàn)在docker stop的等待過程中,如果終止docker stop的執(zhí)行,容器最終沒有被關(guān)閉。而docker kill幾乎是立刻發(fā)生,無法撤銷。
總結(jié)
關(guān)于docker容器的生命周期管理,咸魚踩坑之后認(rèn)為需要加深理解的部分是關(guān)于docker run/start/create 以及 docker kill/stop/restart這兩大部分。
關(guān)于docker kill 和 docker stop 區(qū)別希望大家能著重看下上面docker kill/stop區(qū)別部分,至于docker run/start/create最好能夠動(dòng)手敲一下感受下不同參數(shù)創(chuàng)建的后容器區(qū)別。
以上就是咸魚關(guān)于容器生命周期管理部分的踩坑總結(jié)。
上一個(gè):彩禮是女方個(gè)人財(cái)產(chǎn)還是夫妻共同財(cái)產(chǎn)
下一個(gè):內(nèi)置功能菜單手游(內(nèi)置功能菜單小游戲大全)

美特斯倉儲(chǔ)物流有限公司,山西美特斯倉儲(chǔ)物流有限公司信益度
傳統(tǒng)景觀水處理方法及存在問題
傳銷的資金會(huì)全部沒收嗎?
三國群英傳奧汀科技手機(jī)版下載(奧汀三國群英傳威力加強(qiáng)版)
票據(jù)追索權(quán)行使期限是多久
合同糾紛法院可以調(diào)解嗎
連鎖店網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的應(yīng)用方案
w10系統(tǒng)關(guān)機(jī)了按鍵鍵盤又開機(jī)了(window10系統(tǒng)關(guān)機(jī)后鍵盤為什么還亮著)
電熱毯的輻射對(duì)人體有害嗎?電熱毯的輻射對(duì)孕婦有多大影響?
安卓70s7怎么關(guān)閉,安卓70后臺(tái)運(yùn)行鍵一鍵關(guān)閉所有程序全部關(guān)了去就還有英雄聯(lián)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos