在 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` 服務的一個執行個體正在 `worker2` 節點上執行。您可能會看到服務在您的管理節點上執行。預設情況下,Swarm 中的管理節點可以像工作節點一樣執行任務。

    Swarm 也會顯示服務任務的「期望狀態」和「目前狀態」,以便您可以查看任務是否根據服務定義執行。

  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 中執行的服務的規模。