也因此,意味著在給定的硬件上能運行更多數量的容器,甚至可以直接把Docker運行在虛擬機上。

容器的生命周期管理

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

下面咸魚會對容器管理的部分命令簡要學習:

容器創建(docker create)

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

常用參數:

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

容器啟動(docker start)

啟動一個或多個容器。

命令格式:docker start [參數] 容器[容器..]

常用參數:

-a 將當前的輸入/輸出連接到容器
-i 將當前的輸入連接到容器上

容器創建并啟動(docker run)

命令格式:
docker run [參數] 鏡像 [容器執行命令] [執行命令提供的參數]

常用參數:

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

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

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 容器[容器..]

容器關閉(docker stop)

關閉一個或多個容器。

docker stop 關閉一個或多個容器

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

-t 關閉前的等待時間,默認是10秒

容器終止(docker kill)

強制并立即關閉一個或多個處于暫停或運行狀態的容器。

命令格式:docker kill [參數] 容器[容器..]

常用參數:
-s 指定發給容器的關閉信號,默認為“kill”

容器重啟(docker restart)

重啟一個或多個處于運行狀態、暫停狀態、關閉狀態或創建狀態的容器。

命令格式:
docker restart [參數] 容器[容器..]

常用參數:

-t 關閉前的等待時間,默認是10秒,實則是關閉前的等待時間

容器刪除(docker container rm / docker rm )

命令格式:docker container rm [參數] 容器[容器..]

常用參數:

-f 強制刪除
-v 刪除容器的同時刪除容器的數據卷

docker kill 和 docker stop 區別

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

這里需要說明下關linux下關于終止進程的信號:SIGTERM 和 SIGKILL

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

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

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

docker kill 直接發出SIGKILL信號關閉容器。但也可以通過-s參數修改發出的信號。

docker restart 中同樣可以設置 -t 等待時間,當等待時間過后會立刻發送SIGKILL信號,直接關閉容器。

因此會發現在docker stop的等待過程中,如果終止docker stop的執行,容器最終沒有被關閉。而docker kill幾乎是立刻發生,無法撤銷。

總結

關于docker容器的生命周期管理,咸魚踩坑之后認為需要加深理解的部分是關于docker run/start/create 以及 docker kill/stop/restart這兩大部分。

關于docker kill 和 docker stop 區別希望大家能著重看下上面docker kill/stop區別部分,至于docker run/start/create最好能夠動手敲一下感受下不同參數創建的后容器區別。

以上就是咸魚關于容器生命周期管理部分的踩坑總結。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Docker | Docker技術基礎梳理(三) - 容器生命周期管理

登錄

找回密碼

注冊