Swarm 任務狀態

Docker 允許您建立服務,服務可以啟動任務。服務是所需狀態的描述,而任務則執行工作。工作按以下順序排程到 swarm 節點上:

  1. 使用 docker service create 建立一個服務。
  2. 請求傳送到 Docker 管理器節點。
  3. Docker 管理器節點排程服務在特定節點上執行。
  4. 每個服務可以啟動多個任務。
  5. 每個任務都有一個生命週期,包含 NEWPENDINGCOMPLETE 等狀態。

任務是執行一次直到完成的執行單元。當一個任務停止時,它不會再次執行,但可能會有一個新的任務來替代它。

任務會經歷多個狀態,直到完成或失敗。任務在 NEW 狀態下初始化。任務會向前推進經歷多個狀態,其狀態不會倒退。例如,一個任務永遠不會從 COMPLETE 變回 RUNNING

任務會按以下順序經歷這些狀態:

任務狀態描述
NEW任務已初始化。
PENDING任務的資源已分配。
ASSIGNEDDocker 已將任務分配給節點。
ACCEPTED任務已被工作節點接受。如果工作節點拒絕該任務,狀態將變為 REJECTED
READY工作節點已準備好啟動任務。
PREPARINGDocker 正在準備任務。
STARTINGDocker 正在啟動任務。
RUNNING任務正在執行中。
COMPLETE任務已退出,沒有錯誤程式碼。
FAILED任務因錯誤程式碼而退出。
SHUTDOWNDocker 請求任務關閉。
REJECTED工作節點拒絕了該任務。
ORPHANED節點宕機時間過長。
REMOVE任務不是最終狀態,但關聯的服務已被移除或縮減。

檢視任務狀態

執行 docker service ps <service-name> 來獲取任務的狀態。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.…"

接下來去哪裡