swarm 上のサービスを調べる¶
swarm に サービスをデプロイ したら、swarm 上で実行している全サービスの詳細を Docker CLI で確認できます。
- 準備がまだであれば、ターミナルを開き、マネージャ・ノードを実行しているマシンに SSH で入ります。たとえば、このチュートリアルでは
manager1
という名前のマシンを使います。
docker service inspect --pretty <サービスID>
を実行したら、サービスに関する詳細を読みやすい形式で表示します。
helloworld
サービスの詳細を見るには、次のようにします。
$ docker service inspect --pretty helloworld
ID: 9uk4639qpg7npwf3fn2aasksr
Name: helloworld
Mode: REPLICATED
Replicas: 1
Placement:
Strategy: SPREAD
UpdateConfig:
Parallelism: 1
ContainerSpec:
Image: alpine
Args: ping docker.com
ちなみに
サービスの詳細を json 形式で得るには、同じコマンドで --pretty
フラグを使わずに実行します。
$ docker service inspect helloworld
[
{
"ID": "9uk4639qpg7npwf3fn2aasksr",
"Version": {
"Index": 418
},
"CreatedAt": "2016-06-16T21:57:11.622222327Z",
"UpdatedAt": "2016-06-16T21:57:11.622222327Z",
"Spec": {
"Name": "helloworld",
"TaskTemplate": {
"ContainerSpec": {
"Image": "alpine",
"Args": [
"ping",
"docker.com"
]
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"MaxAttempts": 0
},
"Placement": {}
},
"Mode": {
"Replicated": {
"Replicas": 1
}
},
"UpdateConfig": {
"Parallelism": 1
},
"EndpointSpec": {
"Mode": "vip"
}
},
"Endpoint": {
"Spec": {}
}
}
]
docker service tasks <サービスID>
を実行すると、サービスがどのノードで動作しているのか分かります。
$ docker service tasks helloworld
ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE
8p1vev3fq5zm0mi8g0as41w35 helloworld.1 helloworld alpine Running 3 minutes Running worker2
この場合、 helloworld
サービスは worker2
ノード上で動作しています。マネージャ・ノード上からサービスを実行しているのが確認できます。デフォルトでは、Swarm 内のマネージャ・ノードはワーカ・ノードのようにタスクを実行可能です。
また、swarm はサービス・タスクの DESIRED STATE
(期待状態)と LAST STATE
(最新状態)を表示します。これでサービス定義に従ってタスクを実行しているか確認できます。
- タスクを実行中のノード上で
docker ps
を実行したら、タスク用のコンテナに関する詳細を確認できます。
ちなみに
helloworld
がマネージャ・ノード以外で実行中の場合は、対象ノードに SSH する必要があります。
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e609dde94e47 alpine:latest "ping docker.com" 3 minutes ago Up 3 minutes helloworld.1.8p1vev3fq5zm0mi8g0as41w35
次は何をしますか?¶
次は、スワーム内で実行するサービスの スケールを変更 できます。
参考
- Inspect a service on the swarm
- https://docs.docker.com/engine/swarm/swarm-tutorial/inspect-service/