Swarm タスクの状態
Docker ではサービスの生成を行いますが、そこではタスクが起動されます。 サービスは期待される状態が記述されたものであり、タスクがそれを実行します。 Swarm ノードにおいては以下の順に動作がスケジュールされます。
docker service create
を使ってサービスを生成します。- 上の要求が Docker マネージャーノードに届きます。
- Docker マネージャーノードは、特定ノード上にて実行するサービスをスケジューリングします。
- 各サービスは複数のタスクを起動します。
- 各タスクにはライフサイクルがあり、
NEW
、PENDING
、COMPLETE
といった状態があります。
タスクとは、一度実行されてから完了するまでの実行単位のことです。 タスクが停止すると、再度実行されることはありません。 別の新たなタスクにとって代わるかもしれません。
タスクは完了か失敗という結果に至るまでに、数種類の状態を経ていきます。
タスクはNEW
という初期化状態から始まります。
タスクが数種類の状態を経るのは、常に次の状態へ向けて前進していくものであって、状態が戻るようなことはありません。
たとえばタスクがCOMPLETE
からRUNNING
になることはありません。
タスクは以下に示す順に、状態を変化させていきます。
タスクの状態 | 日本語訳 | 内容説明 |
---|---|---|
NEW |
初期化 | タスクが初期化されました。 |
PENDING |
保留 | タスクに対するリソースが割り当てられました。 |
ASSIGNED |
割当済 | Docker がタスクをノードに割り当てました。 |
ACCEPTED |
受付済 | タスクがワーカーノードによって受けつけられました。 ワーカーノードがタスクを拒否すると、状態は REJECTED に変わります。 |
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.…"