Docker Images(鏡像)生命周期
Docker 是一個用于創建、部署和運行應用容器的平臺。為了更好地理解 Docker 的生命周期,以下是相關概念的介紹,并說明它們如何相互關聯:
-
Docker:
- Docker 是一個開源平臺,用于自動化應用程序在輕量級、便攜式容器中的部署、擴展和管理。
-
Dockerfile:
- Dockerfile 是一個文本文件,包含一系列指令,用于構建 Docker 鏡像。每個指令在 Docker 鏡像中創建一個新的層。
-
build:
docker build
命令用于從 Dockerfile 構建一個 Docker 鏡像。該命令讀取 Dockerfile 的內容,并按照其中的指令一步步創建鏡像。
-
Images:
- Docker 鏡像是一個不可變的文件,它包含了應用程序以及其運行所需的一切。鏡像是基于層的,每層代表一個文件系統的快照。
-
tag:
- 標簽用于給 Docker 鏡像賦予一個易于識別的名字和版本號。比如,
myapp:1.0
中的1.0
就是一個標簽。
- 標簽用于給 Docker 鏡像賦予一個易于識別的名字和版本號。比如,
-
registry:
- Docker 倉庫是存儲和分發 Docker 鏡像的地方。最常用的公共倉庫是 Docker Hub,也可以有私有倉庫。
-
push:
docker push
命令用于將本地 Docker 鏡像上傳到 Docker 倉庫中,以便在其他環境中使用或共享。
-
pull:
docker pull
命令用于從 Docker 倉庫中下載鏡像到本地環境。
-
Containers:
- 容器是從鏡像創建的一個實例,運行應用程序。容器是輕量級的隔離環境,確保應用程序的獨立運行。
-
run:
docker run
命令用于創建并啟動一個新的容器。例如,docker run myapp:1.0
會從myapp:1.0
鏡像創建并啟動一個容器。
-
commit:
docker commit
命令用于將一個正在運行的容器保存為一個新的鏡像。這對于保存容器的當前狀態很有用。
-
stop:
docker stop
命令用于停止一個正在運行的容器。停止的容器可以通過start
命令重新啟動。
-
start:
docker start
命令用于啟動一個已經停止的容器,而不是創建一個新的實例。
-
restart:
docker restart
命令用于重新啟動一個正在運行或已經停止的容器。
-
save:
docker save
命令用于將一個或多個鏡像保存為一個 tar 文件,以便在不同的系統之間傳輸。比如,docker save -o backup.tar myapp:1.0
。
-
load:
docker load
命令用于從一個 tar 文件中加載鏡像。例如,docker load -i backup.tar
。
-
Local Docker instance:
- 本地 Docker 實例是指在本地計算機上運行的 Docker 引擎,用于構建、運行和管理容器。
-
My computer:
- 我的計算機是指用戶個人的計算設備,上面可以安裝 Docker 引擎,允許用戶在本地構建和運行 Docker 容器。
-
backup.tar:
- 這是一個由
docker save
命令生成的 tar 文件,包含一個或多個 Docker 鏡像的備份。它可以用docker load
命令恢復到本地 Docker 實例。
- 這是一個由
通過這些概念,Docker 提供了一個完整的生命周期管理工具集,從創建和測試鏡像,到分發和運行容器,再到管理和備份鏡像。每個步驟都在 Docker 環境中起著關鍵作用,確保應用程序可以高效、可靠地運行在不同的計算環境中。
Docker Container(容器)生命周期
Docker 容器管理涉及一系列命令和狀態,用于控制容器的生命周期。以下是對這些概念的簡要介紹:
-
docker run:
- 創建并啟動一個新的容器。例如,
docker run myapp:latest
會從myapp:latest
鏡像創建并啟動一個容器。
- 創建并啟動一個新的容器。例如,
-
docker restart:
- 重新啟動一個正在運行或已停止的容器。相當于先執行
docker stop
,然后再執行docker start
。
- 重新啟動一個正在運行或已停止的容器。相當于先執行
-
docker create:
- 僅創建一個新的容器,但不啟動它。可以后續用
docker start
來啟動這個容器。
- 僅創建一個新的容器,但不啟動它。可以后續用
-
docker start:
- 啟動一個已經被創建但未運行的容器,或者重新啟動一個已停止的容器。
-
created:
- 容器狀態,表示容器已經被創建,但還沒有被啟動。
-
running:
- 容器狀態,表示容器正在運行中。
-
docker 容器的主進程退出:
- 當容器內的主進程(PID 1)退出時,容器也會停止運行,狀態變為
exited
。
- 當容器內的主進程(PID 1)退出時,容器也會停止運行,狀態變為
-
docker 服務掛掉:
- 如果 Docker 守護進程(Docker Daemon)崩潰或停止,所有運行中的容器都會停止。
-
docker pause:
- 暫停一個運行中的容器中的所有進程。
-
docker unpause:
- 恢復一個被暫停的容器中的所有進程。
-
docker rm:
- 刪除一個已停止的容器。例如,
docker rm mycontainer
刪除名為mycontainer
的容器。
- 刪除一個已停止的容器。例如,
-
docker rm -f:
- 強制刪除一個正在運行的容器。這相當于先執行
docker stop
再執行docker rm
。
- 強制刪除一個正在運行的容器。這相當于先執行
-
docker stop/docker kill:
docker stop
:優雅地停止一個運行中的容器,發送 SIGTERM 信號,允許進程進行清理。docker kill
:立即停止一個運行中的容器,發送 SIGKILL 信號,強制終止進程。
-
paused:
- 容器狀態,表示容器中的所有進程已被暫停。
-
exited:
- 容器狀態,表示容器中的主進程已經退出,容器已停止運行。
-
deleted:
- 容器狀態,表示容器已經被刪除。
這些命令和狀態提供了全面的工具集,允許用戶管理 Docker 容器的整個生命周期,從創建、啟動、暫停、停止到最終刪除。這樣可以靈活地控制應用程序的運行和資源的使用。
參考博客:
[1] https://cloud.tencent.com/developer/article/1885678
[2] https://cloud.tencent.com/developer/article/1518465