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 <服務名稱> 以取得工作的狀態。「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.…"

後續步驟