最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker 容器全生命周期管理與運維命令實戰(zhàn)演練

 更新時間:2025年12月11日 12:12:01   作者:Undoom  
本文將深入剖析 Docker 容器管理的二十余條核心命令,結(jié)合實際操作案例與執(zhí)行結(jié)果,詳細(xì)解讀從容器創(chuàng)建、運行、調(diào)試到銷毀的全過程,感興趣的朋友跟隨小編一起看看吧

前言

在容器化技術(shù)的實際應(yīng)用中,對容器生命周期的精準(zhǔn)控制、運行時狀態(tài)的監(jiān)控以及故障排查是運維與開發(fā)人員必須掌握的核心技能。本文將深入剖析 Docker 容器管理的二十余條核心命令,結(jié)合實際操作案例與執(zhí)行結(jié)果,詳細(xì)解讀從容器創(chuàng)建、運行、調(diào)試到銷毀的全過程。

一、 容器創(chuàng)建與啟動機制:docker create

docker create 命令用于創(chuàng)建一個新的容器,但并不會立即啟動它。這一機制允許用戶在容器運行前預(yù)先配置好網(wǎng)絡(luò)、存儲卷、環(huán)境變量及資源限制等參數(shù),使容器處于 Created 狀態(tài),等待后續(xù)的啟動指令。

1.1 命令語法與關(guān)鍵參數(shù)解析

基本語法如下:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

該命令擁有豐富的參數(shù)選項,用于定義容器的運行時環(huán)境:

  • 交互與終端控制
    • -i (interactive):保持標(biāo)準(zhǔn)輸入(STDIN)打開,即使沒有連接。通常用于需要交互的場景。
    • -t (tty):分配一個偽終端(pseudo-TTY)。-i-t 常組合使用,以便在容器啟動后進行交互式操作。
  • 網(wǎng)絡(luò)與端口映射
    • -P (Publish all):隨機端口映射。Docker 會隨機選擇宿主機的一個高位端口映射到容器內(nèi)部開放的所有端口。
    • -p (publish):指定端口映射。格式為 宿主機端口:容器端口,實現(xiàn)了外部流量訪問容器內(nèi)部服務(wù)的通道。
    • --network:指定容器的網(wǎng)絡(luò)模式(如 bridge, host, none, overlay 等),默認(rèn)為 bridge 模式。
    • --link:用于鏈接到另一個容器,實現(xiàn)容器間的通信(在現(xiàn)代 Docker 版本中推薦使用自定義網(wǎng)絡(luò)代替)。
  • 標(biāo)識與元數(shù)據(jù)
    • --name:為容器指定一個易于識別的名稱,替代自動生成的隨機名稱。
    • -h (hostname):指定容器內(nèi)部的主機名。
  • 資源限制與環(huán)境配置
    • -e (env):設(shè)置環(huán)境變量,用于向容器內(nèi)傳遞配置信息。
    • --cpuset-cpus:綁定容器到指定的 CPU 核心運行(如 “0-2” 或 “0,1,2”),用于高性能計算場景的資源隔離。
    • -m (memory):設(shè)置容器可使用的最大內(nèi)存限額,防止單個容器耗盡宿主機資源。
  • 存儲與生命周期
    • -v (volume):綁定掛載卷,實現(xiàn)數(shù)據(jù)的持久化或宿主機文件共享。
    • --rm:容器退出時自動清理容器文件系統(tǒng),適用于臨時任務(wù)。
    • --restart:定義容器的重啟策略(如 always, on-failure),確保服務(wù)的高可用性。

1.2 實戰(zhàn)演練:端口沖突與狀態(tài)觀察

在實際操作中,嘗試創(chuàng)建一個名為 myweb 的容器,并將宿主機的 80 端口映射到容器的 80 端口:

docker create --name myweb -p 80:80 nginx:1.23.3

執(zhí)行上述命令后,Docker 返回了一個長字符串(容器 ID),表明容器對象已成功創(chuàng)建。

然而,在執(zhí)行創(chuàng)建命令之前,宿主機的 80 端口實際上已經(jīng)被其他進程占用。

這里揭示了一個重要機制:docker create 階段僅進行容器配置的初始化和元數(shù)據(jù)的寫入,并不會實際占用宿主機的端口資源。因此,即使端口沖突,創(chuàng)建操作依然可以成功。

此時使用 docker ps 命令無法查看到該容器,因為默認(rèn)情況下該命令僅顯示正在運行(Up)的容器。需要添加 -a 參數(shù)查看所有狀態(tài)的容器:

docker ps -a

從輸出結(jié)果可以看到,myweb 容器的 Status 為 Created,表明其已就緒但未運行。

1.3 啟動失敗與端口修正

嘗試啟動處于 Created 狀態(tài)的容器:

docker start myweb

此時系統(tǒng)拋出報錯信息,提示端口綁定失敗,因為 80 端口已被占用。

驗證宿主機 80 端口的占用情況,發(fā)現(xiàn)確實存在正在運行的 Nginx 服務(wù)。

為了解決此問題,需要重新創(chuàng)建一個使用不同宿主機端口的容器。例如,將宿主機的 8050 端口映射到容器的 80 端口:

docker create --name myweb2 -p 8050:80 nginx:1.23.3

隨后啟動該容器,操作順利完成。

此時,宿主機的 8050 端口已成功轉(zhuǎn)發(fā)流量至容器內(nèi)部,實現(xiàn)了服務(wù)的對外發(fā)布。

二、 日志監(jiān)控與排錯:docker logs

容器遵循“一個容器一個進程”的原則,其應(yīng)用日志通常直接輸出到標(biāo)準(zhǔn)輸出(STDOUT)和標(biāo)準(zhǔn)錯誤(STDERR)。docker logs 命令用于獲取這些輸出流,是排查容器故障的第一手資料。

2.1 命令語法與參數(shù)

docker logs [OPTIONS] CONTAINER
  • -f (–follow):實時跟蹤日志輸出,類似于 Linux 的 tail -f 命令。
  • --since:僅顯示指定時間之后的日志,便于縮小排查范圍。
  • -t (–timestamps):在每行日志前顯示精確的時間戳。
  • -n (–tail):僅列出最新的 N 條日志,避免大量歷史日志刷屏。

2.2 實戰(zhàn)演練:實時日志追蹤

以前文創(chuàng)建的 myweb2 容器為例,首先確認(rèn)容器已啟動。

訪問映射的端口,驗證 Nginx 服務(wù)運行正常。

直接執(zhí)行 docker logs myweb2 會一次性輸出當(dāng)前所有的日志內(nèi)容并退出。

若需持續(xù)監(jiān)控服務(wù)請求,應(yīng)配合 -f 參數(shù):

docker logs -f myweb2

此時,每當(dāng)有新的 HTTP 請求到達(dá) Nginx,控制臺將實時刷新日志條目。

如果只關(guān)注最近發(fā)生的事件,可以使用 -n 參數(shù)限制行數(shù):

docker logs -f -n 5 myweb2

這精確展示了最后 5 條日志記錄,極大提高了運維效率。

三、 容器連接機制:docker attach

docker attach 命令用于將當(dāng)前終端的標(biāo)準(zhǔn)輸入、輸出和錯誤流連接到正在運行的容器的主進程上。

3.1 風(fēng)險與信號代理

該命令的一個顯著特性是默認(rèn)將本地終端的信號轉(zhuǎn)發(fā)給容器。如果在 attach 模式下按下 Ctrl+C,發(fā)送的 SIGINT 信號會被容器內(nèi)的主進程(PID 1)接收,導(dǎo)致容器停止運行。

3.2 實戰(zhàn)演練:信號代理控制

直接連接容器:

docker attach myweb2

在此狀態(tài)下,若執(zhí)行中止操作,Nginx 進程會隨之關(guān)閉。

為了避免這種情況,可以使用 --sig-proxy=false 參數(shù)。該參數(shù)設(shè)置是否進行信號代理,默認(rèn)為 true。設(shè)置為 false 后,退出 attach 模式(例如使用 Ctrl+C)不會影響容器的運行狀態(tài)。

docker attach --sig-proxy=false myweb2

此時即使強制退出連接,容器依然在后臺穩(wěn)健運行。

四、 容器內(nèi)命令執(zhí)行:docker exec

attach 不同,docker exec 允許在正在運行的容器中啟動一個新的進程(如 /bin/bash),這是調(diào)試和管理容器最常用的方式。

4.1 關(guān)鍵參數(shù)

  • -d:分離模式,在后臺執(zhí)行命令。
  • -i:保持 STDIN 打開。
  • -t:分配偽終端。
  • -e:設(shè)置該次執(zhí)行的環(huán)境變量。
  • -u:指定執(zhí)行命令的用戶(Name 或 UID)。
  • -w:指定命令執(zhí)行的工作目錄。

4.2 實戰(zhàn)演練:多維度的容器交互

啟動 myweb2 后,通過以下命令進入容器的交互式 Shell:

docker exec -it myweb2 bash

在容器內(nèi)部,可以執(zhí)行如 nginx -v 等命令查看應(yīng)用詳情。

docker exec -it myweb2 nginx -v

臨時環(huán)境變量設(shè)置
通過 -e 參數(shù),可以在執(zhí)行命令時注入特定的環(huán)境變量,這在測試配置或腳本時非常有用。

docker exec -it -e mynginx=kk myweb2 bash

指定用戶身份
默認(rèn)情況下,exec 使用 root 用戶。通過查看 /etc/passwd 可知容器內(nèi)存在 nginx 用戶。

使用 -u 參數(shù)切換身份執(zhí)行命令,模擬權(quán)限受限場景:

docker exec -it -u nginx myweb2 nginx -v

指定工作目錄
使用 -w 參數(shù)可以直接在特定目錄下啟動進程,省去了 cd 的步驟。

docker exec -it -w /etc myweb2 bash

如圖所示,進入容器后的默認(rèn)路徑即為 /etc。

五、 容器狀態(tài)控制:start / stop / restart / kill

這組命令構(gòu)成了容器運行狀態(tài)的基礎(chǔ)控制流。

5.1 啟動與停止

docker start:啟動一個或多個已經(jīng)被停止的容器。

docker start mynginx

執(zhí)行后,容器狀態(tài)由 Exited 變?yōu)?Up。

docker stop:停止正在運行的容器。該命令會向容器主進程發(fā)送 SIGTERM 信號,給予進程處理未完成請求和清理資源的時間(默認(rèn) 10 秒)。如果超時未停止,則強制發(fā)送 SIGKILL。

docker stop myweb2

停止后,通過 docker ps -a 確認(rèn)狀態(tài)已變更。

5.2 重啟與強制終止

docker restart:相當(dāng)于連續(xù)執(zhí)行 stop 和 start。

配合日志觀察重啟過程:
在終端 A 監(jiān)控日志:docker logs -f myweb2
在終端 B 執(zhí)行重啟:docker restart myweb2

日志流中會顯示服務(wù)停止和重新啟動的記錄。

docker kill:直接發(fā)送 SIGKILL 信號,立即終止容器進程,不給予清理資源的機會。

docker kill myweb2

六、 進程與資源監(jiān)控:top / stats

6.1 進程查看:docker top

docker top 允許用戶查看容器內(nèi)部正在運行的進程列表,無需進入容器內(nèi)部。這對于精簡版鏡像(如 Alpine 或 Distroless)尤為重要,因為這些鏡像可能不包含 pstop 命令。

啟動容器后,獲取其 ID 或名稱:

查看進程詳情:

docker top 74a1273c093d

輸出展示了 UID、PID(宿主機上的進程 ID)以及 PPID 等信息。

6.2 資源統(tǒng)計:docker stats

docker stats 提供實時的容器資源使用情況監(jiān)控,包括 CPU、內(nèi)存、網(wǎng)絡(luò) I/O 和塊設(shè)備 I/O。

默認(rèn)模式:實時刷新顯示所有運行中容器的統(tǒng)計信息。

docker stats

查看所有容器:使用 -a 參數(shù)包括未運行的容器(雖然未運行容器資源占用通常為 0)。

docker stats -a

格式化輸出:使用 --format 參數(shù)輸出 JSON 格式,便于腳本解析和監(jiān)控系統(tǒng)集成。

docker stats --format json

快照模式:使用 --no-stream 參數(shù),僅輸出當(dāng)前瞬間的狀態(tài)并退出,不持續(xù)刷新。

docker stats --no-stream

完整信息--no-trunc 參數(shù)顯示完整的容器 ID,不進行截斷。

docker stats --no-trunc

七、 元數(shù)據(jù)查閱與端口檢測:inspect / port

7.1 深度信息查閱:docker inspect

docker inspect 是獲取容器或鏡像最詳細(xì)元數(shù)據(jù)的命令。它返回一個龐大的 JSON 數(shù)組,包含配置信息、網(wǎng)絡(luò)設(shè)置、掛載卷詳情等。

docker container inspect myweb2

通過 -f 參數(shù)可以利用 Go 模板語法提取特定字段,或直接輸出為緊湊的 JSON。

docker container inspect -f json myweb2

7.2 端口映射查詢:docker port

當(dāng)容器配置了復(fù)雜的端口映射規(guī)則(如隨機端口 -P)時,docker port 能快速定位宿主機端口與容器端口的對應(yīng)關(guān)系。

docker port myweb2

八、 文件系統(tǒng)操作:cp / diff

8.1 文件拷貝:docker cp

該命令用于在容器與宿主機之間雙向拷貝文件,類似于 Linux 的 cp 命令,但跨越了容器隔離邊界。

場景一:從容器復(fù)制到宿主機
首先進入容器確認(rèn)文件路徑:

docker exec -it myweb2 bash
cd /usr/share/nginx/html/

確認(rèn) index.html 存在。

退出容器后執(zhí)行拷貝:

docker cp myweb2:/usr/share/nginx/html/index.html .

場景二:修改后覆蓋回容器
在宿主機修改 index.html 內(nèi)容。

將修改后的文件拷回容器:

docker cp ./index.html myweb2:/usr/share/nginx/html/

進入容器驗證,內(nèi)容已更新。

8.2 變更檢查:docker diff

docker diff 用于列出容器文件系統(tǒng)中自鏡像啟動以來發(fā)生變化的文件和目錄。狀態(tài)標(biāo)記說明:

  • A (Add):新增的文件或目錄。
  • C (Change):修改的文件。
  • D (Delete):刪除的文件。

查看 myweb2 的變動:

docker diff myweb2

如果在容器內(nèi)手動創(chuàng)建一個新文件,再次查看 diff,會明確顯示該文件狀態(tài)為 A。

九、 鏡像構(gòu)建與遷移:commit / export / import

9.1 從容器構(gòu)建鏡像:docker commit

當(dāng)對容器進行了修改(如安裝軟件、修改配置),可以使用 commit 將當(dāng)前容器狀態(tài)保存為一個新的鏡像。

首先啟動一個基礎(chǔ)容器:

docker run -d --name myweb4forcommit nginx:1.23.3

確認(rèn)運行狀態(tài):

執(zhí)行提交操作:

docker commit myweb4forcommit myweb4:v1.0

查看鏡像列表,新鏡像已生成。

高級參數(shù)

  • -a:指定作者。
  • -m:提交說明。
  • -p:提交時暫停容器(默認(rèn)開啟),防止數(shù)據(jù)不一致。
  • -c:修改 Dockerfile 指令(如 CMD)。
docker commit -a 'bit' -m 'create' -p myweb4forcommit myweb4:v2.0

查看新鏡像詳情,作者信息已被記錄。

通過 -c 修改啟動命令:

檢查鏡像信息確認(rèn) CMD 已變更。

9.2 導(dǎo)出與導(dǎo)入:export / import

export 將容器的文件系統(tǒng)導(dǎo)出為 tar 歸檔文件,丟棄歷史層級信息,僅保留當(dāng)前快照。

導(dǎo)出(Export)
啟動容器 myweb

導(dǎo)出為 mweb.tar

docker export -o mweb.tar myweb

導(dǎo)入(Import)
將 tar 包導(dǎo)入為新鏡像:

docker import mweb.tar myweb1:v1.0

需要注意,import 導(dǎo)入的鏡像會丟失原始鏡像的元數(shù)據(jù)(如 CMD、ENTRYPOINT)。查看新鏡像詳情可證實這一點:

因此,在導(dǎo)入時通常需要使用 -c 參數(shù)重設(shè)啟動命令:

docker import -c 'CMD ["nginx","-g","daemon off;"]' -m "creat by bit" mweb.tar myweb7:v1.0

驗證新鏡像的 CMD 配置:

十、 暫停與恢復(fù):pause / unpause

docker pause 利用 cgroups 的特性,凍結(jié)容器內(nèi)所有進程的執(zhí)行。這與停止容器不同,進程并未退出,只是不再獲得 CPU 時間片。

啟動容器并確認(rèn)狀態(tài):

執(zhí)行暫停:

docker pause myweb5

查看狀態(tài),顯示為 Paused。

執(zhí)行恢復(fù):

docker unpause myweb5

十一、 其他管理命令

11.1 刪除容器:docker rm

用于刪除已停止的容器。若要刪除運行中的容器,需使用 -f (force) 參數(shù),這會發(fā)送 SIGKILL 信號。

docker rm -f myweb

11.2 等待容器退出:docker wait

docker wait 會阻塞當(dāng)前終端,直到指定容器停止運行,然后打印出該容器的退出狀態(tài)碼。

在終端 A 執(zhí)行等待:

docker wait myweb

在終端 B 強制殺死容器:

終端 A 立即解除阻塞并輸出退出碼(如 137,表示被 SIGKILL 終止)。

11.3 重命名:docker rename

更改容器名稱。

docker rename myweb9 myweb8

11.4 清理停止的容器:docker container prune

一鍵刪除系統(tǒng)中所有處于停止?fàn)顟B(tài)的容器,釋放磁盤空間。使用 -f 參數(shù)可跳過確認(rèn)提示。

執(zhí)行清理:

docker container prune

清理后再次查看,已無殘留容器。

11.5 動態(tài)更新配置:docker update

docker update 允許在容器運行時動態(tài)調(diào)整其資源限制(如 CPU 和內(nèi)存),無需重啟容器。

啟動一個標(biāo)準(zhǔn)容器:

將其內(nèi)存限制更新為 500MB:

docker update -m 500m myweb

系統(tǒng)返回容器名稱表示更新成功,容器即刻在新的資源約束下運行。

通過對上述二十余條命令的深入剖析與實戰(zhàn)演練,我們可以看到 Docker 提供了一套邏輯嚴(yán)密、功能強大的工具集,涵蓋了從容器創(chuàng)建、運行監(jiān)控到資源調(diào)整的全過程。熟練掌握這些命令,是構(gòu)建穩(wěn)定、高效容器化基礎(chǔ)設(shè)施的基石。

到此這篇關(guān)于Docker 容器全生命周期管理與運維命令深度解析的文章就介紹到這了,更多相關(guān)docker生命周期管理與運維命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析docker-compose部署mysql無法訪問的問題

    淺析docker-compose部署mysql無法訪問的問題

    Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應(yīng)用,可以一條命令啟動多個容器,使用Docker Compose不再需要使用shell腳本來啟動容器。接下來通過本文給大家分享docker-compose部署mysql無法訪問的問題,需要的朋友參考下吧
    2018-10-10
  • 基于Docker+Selenium Grid的測試技術(shù)應(yīng)用示例代碼

    基于Docker+Selenium Grid的測試技術(shù)應(yīng)用示例代碼

    Selenium Grid允許我們在多臺計算機上并行運行測試,并集中管理不同的瀏覽器版本和瀏覽器配置。這篇文章給大家介紹基于Docker+Selenium Grid的測試技術(shù)應(yīng)用示例代碼,需要的朋友參考下吧
    2021-08-08
  • docker run -e傳遞環(huán)境變量的過程

    docker run -e傳遞環(huán)境變量的過程

    這篇文章主要介紹了docker run -e傳遞環(huán)境變量的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Docker創(chuàng)建tomcat容器實例后無法訪問(HTTP狀態(tài)404)

    Docker創(chuàng)建tomcat容器實例后無法訪問(HTTP狀態(tài)404)

    本文主要介紹了Docker創(chuàng)建tomcat容器實例后無法訪問,HTTP狀態(tài)顯示404,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Docker?安裝?Consul單機模式的操作方法

    Docker?安裝?Consul單機模式的操作方法

    這篇文章主要介紹了Docker?安裝?Consul單機模式,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例

    Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例

    本文主要介紹了Docker遠(yuǎn)程連接設(shè)置的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • docker如何創(chuàng)建nginx圖片服務(wù)器

    docker如何創(chuàng)建nginx圖片服務(wù)器

    這篇文章主要介紹了docker如何創(chuàng)建nginx圖片服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker update 命令與環(huán)境變量管理方法

    docker update 命令與環(huán)境變量管理方法

    本文介紹Docker中dockerupdate命令用于動態(tài)調(diào)整運行中容器的配置,如資源限制、重啟策略等,但部分需重啟生效,環(huán)境變量在啟動時設(shè)置,無法動態(tài)修改,建議通過掛載文件或Docker Compose管理,感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • Docker清理命令之如何刪除所有的鏡像和容器

    Docker清理命令之如何刪除所有的鏡像和容器

    這篇文章主要介紹了Docker清理命令之如何刪除所有的鏡像和容器問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • docker安裝redmine步驟

    docker安裝redmine步驟

    在本篇文章里小編給大家整理的是關(guān)于docker安裝redmine步驟和相關(guān)代碼,需要的朋友們學(xué)習(xí)下。
    2020-01-01

最新評論

泰安市| 香河县| 西林县| 印江| 南通市| 武冈市| 图木舒克市| 资兴市| 贡山| 石渠县| 高要市| 璧山县| 永康市| 都兰县| 惠州市| 海门市| 梅河口市| 新津县| 虞城县| 临漳县| 镇赉县| 舞阳县| 衡水市| 淮南市| 金华市| 宁武县| 泾源县| 罗甸县| 简阳市| 岚皋县| 高邮市| 青川县| 雷波县| 理塘县| 平遥县| 德江县| 乌海市| 宜宾市| 富宁县| 乐都县| 绥中县|