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

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

Docker|Docker技術(shù)基礎(chǔ)梳理(三)-容器生命周期管理-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,移動服務(wù)器托管移動服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
什么是容器?

容器(Container):容器是一種輕量級、可移植、并將應(yīng)用程序進(jìn)行的打包的技術(shù),使應(yīng)用程序可以在幾乎任何地方以相同的方式運行,Docker將鏡像文件運行起來后,產(chǎn)生的對象就是容器。容器相當(dāng)于是鏡像運行起來的一個實例且容器具備一定的生命周期。

Docker容器和虛擬機的區(qū)別

相同點:

  • 容器和虛擬機一樣,都會對物理硬件資源進(jìn)行共享使用。

  • 容器和虛擬機的生命周期比較相似(創(chuàng)建、運行、暫停、關(guān)閉等等)。

  • 容器中或虛擬機中都可以安裝各種應(yīng)用,如redis、mysql、nginx等。也就是說,在容器中的操作,如同在一個虛擬機(操作系統(tǒng))中操作一樣。

  • 同虛擬機一樣,容器創(chuàng)建后,會存儲在宿主機上:linux上位于/var/lib/docker/containers下

不同點:

  • 虛擬機的創(chuàng)建、啟動和關(guān)閉都是基于一個完整的操作系統(tǒng)。一個虛擬機就是一個完整的操作系統(tǒng)。而容器直接運行在宿主機的內(nèi)核上,其本質(zhì)上以一系列進(jìn)程的結(jié)合。

  • 容器是輕量級的,虛擬機是重量級的。首先容器不需要額外的資源來管理(不需要Hypervisor、Guest OS),虛擬機額外更多的性能消耗;其次創(chuàng)建、啟動或關(guān)閉容器,如同創(chuàng)建、啟動或者關(guān)閉進(jìn)程那么輕松,而創(chuàng)建、啟動、關(guān)閉一個操作系統(tǒng)就沒那么方便了。
    也因此,意味著在給定的硬件上能運行更多數(shù)量的容器,甚至可以直接把Docker運行在虛擬機上。

容器的生命周期管理

先來看一張容器生命周期示意圖:

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

下面咸魚會對容器管理的部分命令簡要學(xué)習(xí):

容器創(chuàng)建(docker create)

命令格式:
docker create [參數(shù)] 鏡像名稱[容器執(zhí)行命令][執(zhí)行命令時需要提供的參數(shù)]

常用參數(shù):

-t 分配一個虛擬終端
-i 提供一個模擬輸入,不提供則無法輸入默認(rèn)命令
--name 為創(chuàng)建好的容器提供一個容器名,不提供的話隨機分配一個

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

啟動一個或多個容器。

命令格式:docker start [參數(shù)] 容器[容器..]

常用參數(shù):

-a 將當(dāng)前的輸入/輸出連接到容器
-i 將當(dāng)前的輸入連接到容器上
容器創(chuàng)建并啟動(docker run)

命令格式:
docker run [參數(shù)] 鏡像 [容器執(zhí)行命令] [執(zhí)行命令提供的參數(shù)]

常用參數(shù):

-t 分配一個虛擬終端
-i 保持輸入打開
-d 容器后臺運行,并打印容器id
--rm 容器結(jié)束后自動刪除容器

注意:因為我們學(xué)習(xí)docker主要還是為我們之后基于docker的Python開發(fā)服務(wù)的,所以關(guān)于docker run 以及 docker create/start 的一些參數(shù)的具體的區(qū)別就不在文章里贅述,有疑問的朋友可以參考官方文檔,當(dāng)然也歡迎和咸魚在留言區(qū)討論,大家在這里簡單記兩個公式就好:

docker run = doker create + docker start -a
docker run -d = docker create + docker start

這里咸魚推薦大家使用docker run -dti來啟動所需容器。

容器暫停(docker pause/unpause)

docker pause 暫停一個或多個容器

docker unpause 啟動一個或多個暫停中的容器

命令格式:
docker pause/unpause 容器[容器..]

容器關(guān)閉(docker stop)

關(guān)閉一個或多個容器。

docker stop 關(guān)閉一個或多個容器

命令格式:
docker stop 容器[容器..]
常用參數(shù):

-t 關(guān)閉前的等待時間,默認(rèn)是10秒
容器終止(docker kill)

強制并立即關(guān)閉一個或多個處于暫?;蜻\行狀態(tài)的容器。

命令格式:docker kill [參數(shù)] 容器[容器..]

常用參數(shù):
-s 指定發(fā)給容器的關(guān)閉信號,默認(rèn)為“kill”

容器重啟(docker restart)

重啟一個或多個處于運行狀態(tài)、暫停狀態(tài)、關(guān)閉狀態(tài)或創(chuàng)建狀態(tài)的容器。

命令格式:
docker restart [參數(shù)] 容器[容器..]

常用參數(shù):

-t 關(guān)閉前的等待時間,默認(rèn)是10秒,實則是關(guān)閉前的等待時間
容器刪除(docker container rm / docker rm )

命令格式:docker container rm [參數(shù)] 容器[容器..]

常用參數(shù):

-f 強制刪除
-v 刪除容器的同時刪除容器的數(shù)據(jù)卷
docker kill 和 docker stop 區(qū)別

在上面關(guān)于docker容器生命周期管理中stop 和 kill 都是關(guān)閉容器,但是其中的kill是怎么實現(xiàn)強制殺死運行中的容器的呢?

這里需要說明下關(guān)linux下關(guān)于終止進(jìn)程的信號:SIGTERM 和 SIGKILL

SIGKILL信號:無條件終止進(jìn)程信號。進(jìn)程接收到該信號會立即終止,不進(jìn)行清理和暫存工作。該信號不能被忽略、處理和阻塞,它向系統(tǒng)管理員提供了可以殺死任何進(jìn)程的方法。

SIGTERM信號:程序終結(jié)信號,可以由kill命令產(chǎn)生。與SIGKILL不同的是,SIGTERM信號可以被阻塞和終止,以便程序在退出前可以保存工作或清理臨時文件等。

docker stop 會先發(fā)出SIGTERM信號給進(jìn)程,告訴進(jìn)程即將會被關(guān)閉。在-t指定的等待時間過了之后,將會立即發(fā)出SIGKILL信號,直接關(guān)閉容器。

docker kill 直接發(fā)出SIGKILL信號關(guān)閉容器。但也可以通過-s參數(shù)修改發(fā)出的信號。

docker restart 中同樣可以設(shè)置 -t 等待時間,當(dāng)?shù)却龝r間過后會立刻發(fā)送SIGKILL信號,直接關(guān)閉容器。

因此會發(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最好能夠動手敲一下感受下不同參數(shù)創(chuàng)建的后容器區(qū)別。

以上就是咸魚關(guān)于容器生命周期管理部分的踩坑總結(jié)。


分享題目:Docker|Docker技術(shù)基礎(chǔ)梳理(三)-容器生命周期管理-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/gegos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部