swarm 上のサービスを調べる¶
swarm に サービスをデプロイ したら、swarm 上で実行している全サービスの詳細を Docker CLI で確認できます。
準備がまだであれば、ターミナルを開き、manager ノードを実行しているマシンに SSH で入ります。たとえば、このチュートリアルでは
manager1という名前のマシンを使います。
docker service inspect --pretty <サービスID>を実行したら、サービスに関する詳細を読みやすい形式で表示します。helloworldサービスの詳細を見るには、次のようにします。[manager1]$ docker service inspect --pretty helloworld ID: 9uk4639qpg7npwf3fn2aasksr Name: helloworld Service Mode: REPLICATED Replicas: 1 Placement: UpdateConfig: Parallelism: 1 ContainerSpec: Image: alpine Args: ping docker.com Resources: Endpoint Mode: vip
Tip
サービスの詳細を json 形式で得るには、同じコマンドで --pretty フラグを使わずに実行します。
[manager1]$ 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 ps <サービスID>を実行すると、サービスがどのノードで動作しているのか分かります。[manager1]$ docker service ps helloworld NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS helloworld.1.8p1vev3fq5zm0mi8g0as41w35 alpine worker2 Running Running 3 minutes
この場合、
helloworldサービスはworker2ノード上で動作しています。 manager ノード上からサービスを実行しているのが確認できます。デフォルトでは、swarm 内の manager ノードは worker ノードのようにタスクを実行可能です。また、swarm はサービス・タスクの
DESIRED STATE(期待状態)とCURRENT STATE(現在の状態)を表示します。これでサービス定義に従ってタスクを実行しているか確認できます。
タスクを実行中のノード上で
docker psを実行したら、タスク用のコンテナに関する詳細を確認できます。
次は何をしますか?¶
次は、swarm 内で実行するサービスの スケールを変更 できます。
参考
- Inspect a service on the swarm
 https://docs.docker.com/engine/swarm/swarm-tutorial/inspect-service/