Swarm 任務狀態
目錄
Docker 允許您創建服務,這些服務可以啟動任務。服務是對期望狀態的描述,而任務則負責執行工作。工作會按照以下順序在 Swarm 節點上進行排程
- 使用
docker service create創建服務。 - 該請求會發送至 Docker 管理節點(Manager node)。
- Docker 管理節點將服務排程到特定的節點上執行。
- 每個服務可以啟動多個任務。
- 每個任務都有一個生命週期,包含如
NEW、PENDING和COMPLETE等狀態。
任務是執行單元,運行完成後即結束。當任務停止時,它不會再次執行,但可能會由一個新的任務取而代之。
任務會經歷一系列狀態直到完成或失敗。任務初始化時處於 NEW 狀態。任務會依序向前推進,其狀態不會後退。例如,任務絕不會從 COMPLETE 變為 RUNNING。
任務會依下列順序經歷各個狀態
| 任務狀態 | 描述 |
|---|---|
NEW | 任務已初始化。 |
PENDING | 已為任務分配資源。 |
ASSIGNED | Docker 已將任務分配給節點。 |
ACCEPTED | 任務已被工作節點(Worker node)接受。如果工作節點拒絕任務,狀態將變更為 REJECTED。 |
READY | 工作節點準備好啟動該任務。 |
PREPARING | Docker 正在準備該任務。 |
STARTING | Docker 正在啟動該任務。 |
RUNNING | 任務正在執行中。 |
COMPLETE | 任務在沒有錯誤代碼的情況下退出。 |
FAILED | 任務因錯誤代碼而退出。 |
SHUTDOWN | Docker 要求該任務關閉。 |
REJECTED | 工作節點拒絕了該任務。 |
ORPHANED | 該節點離線時間過長。 |
REMOVE | 該任務並非終止狀態,但相關的服務已被移除或縮減規模。 |
查看任務狀態
執行 docker service ps <服務名稱> 以取得任務狀態。CURRENT STATE 欄位顯示任務的狀態以及該狀態持續的時間。
$ docker service ps webserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
owsz0yp6z375 webserver.1 nginx UbuntuVM Running Running 44 seconds ago
j91iahr8s74p \_ webserver.1 nginx UbuntuVM Shutdown Failed 50 seconds ago "No such container: webserver.…"
7dyaszg13mw2 \_ webserver.1 nginx UbuntuVM Shutdown Failed 5 hours ago "No such container: webserver.…"