Swarm 上のサービスの確認

Swarm に対して サービスのデプロイ を行ったので、Docker CLI を利用して Swarm 内で起動しているサービスの詳細を確認していきます。

  1. マシンへの接続ができていなければ、端末画面を開いて SSH により接続します。 接続先はマネージャーノードを起動したマシンです。 たとえばこのチュートリアルではmanager1というマシンを利用します。

  2. docker service inspect --pretty <SERVICE-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
    

    ヒント: サービスの詳細表示を 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": {}
        }
    }
    ]
    
  3. docker service ps <SERVICE-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サービスの 1 インスタンスがworker2ノード上で動いているのがわかります。 マネージャーノード上においても、サービスが動いているかもしれません。 デフォルトにおいて Swarm のマネージャーノードは、ワーカーノードと同じようにタスクを実行することができます。

    Swarm においては、サービスタスクに対して DESIRED STATE(期待される状態)と CURRENT STATE(現在の状態)が示されます。 サービス定義に従ってタスクが実行されているかどうかが、これによってわかります。

  4. タスクが動いているノード上においてdocker psを実行します。 これにより、そのタスクに応じたコンテナーの詳細を確認することができます。

    ヒント: helloworldがマネージャーノードではない、別のノード上で動いている場合は、そのノードに SSH でアクセスしておくことが必要です。

    [worker2]$ 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
    

次にすることは

次は、Swarm 内で起動しているサービスに対して スケールの変更 を行います。

tutorial, cluster management, swarm mode