Shipyard遠端API

振宇要低調發表於2015-09-15

1、鑑權模組

1.1 Login,獲取token

POST  http://192.168.31.149:8080/auth/login

Headers

Content-Type: application/json

Body:

{

  "username": "admin",

  "password": "shipyard"

}

response

{

    "auth_token": "$2a$10$kwlWJbgjkEWnN.JhHJINZOp6grcuio1.USA.io28tTLkKzuCnLl.m",

    "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"

}

2、容器管理

2.1 獲取容器列表

GET  http://192.168.31.149:8080/api/containers

Headers

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

X-Access-Token: admin:$ $2a$10$kwlWJbgjkEWnN.JhHJINZOp6grcuio1.USA.io28tTLkKzuCnLl.m

response

[

{

        "id": "5c12b9ad2961cba3a57947ef5a927dd01545bfe8a73785f7c3b13cb7d0704e38",

        "name": "/shipyard",

        "image": {

            "name": "shipyard/shipyard:latest",

            "entrypoint": [

                "/controller"

            ],

            "hostname": "5c12b9ad2961",

            "bind_ports": [

                {

                    "proto": "tcp",

                    "host_ip": "0.0.0.0",

                    "port": 8080,

                    "container_port": 8080

                }

            ],

            "restart_policy": {},

            "network_mode": "bridge"

        },

        "engine": {

            "id": "compute2",

            "addr": "http://192.168.31.149:4243",

            "cpus": 4,

            "memory": 4096,

            "labels": [

                "dd"

            ]

        },

        "state": "running",

        "ports": [

            {

                "proto": "tcp",

                "host_ip": "0.0.0.0",

                "port": 8080,

                "container_port": 8080

            }

        ]

    },

   {

        "id": "4a5f16641c2a5ecca0b05b399bfdaf3c62abf3681289189ee5336feeeb96b4a9",

        "name": "/gloomy_darwin",

        "image": {

            "name": "mysql_test:latest",

            "environment": {

                "CLOUD_URL": "http://192.168.31.147:8080/starott_cloud_client/cloud/commomconfig/"

            },

            "hostname": "mysqls",

            "restart_policy": {},

            "network_mode": "bridge"

        },

        "engine": {

            "id": "compute2",

            "addr": "http://192.168.31.149:4243",

            "cpus": 4,

            "memory": 4096,

            "labels": [

                "dd"

            ]

        },

        "state": "stopped"

    },

   

 

 

2.2 建立容器

POST  /api/containers

Headers

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

X-Access-Token: admin:$2a$10$P8jnLva2KnYP0xWOLCmYruD0B11z0JIpH3cOnDHplxFdbBIZv.iOW

 

Request body

{

  "name": "ehazlett/go-demo",

  "container_name": "demo",

  "cpus": 0.1,

  "memory": 32,

  "type": "service",

  "hostname": "",

  "domain": "",

  "labels": ["local"],

  "args": [],

  "environment": {

    "FOO": "bar"

  },

  "restart_policy": {

    "name": "always"

  },

  "bind_ports": [

    {

      "host_ip": "10.1.2.3",

      "proto": "tcp",

      "container_port": 8080

    },

    {

      "proto": "tcp",

      "port": 80,

      "container_port": 8080

    }

  ],

  "links": {

    "redis": "db"

  }

}

 

Reponse

       [
  {
    "state": {
      "started_at": "2014-09-12T00:48:23.824260519Z",
      "pid": 5890,
      "running": true
    }, 
    "ports": [
      {
        "container_port": 8080,
        "host_ip": "10.1.2.3",
        "port": 49172,
        "proto": "tcp"
      }
    ],
    "engine": {
      "labels": [
        "local",
        "dev"
      ],
      "memory": 4096,
      "cpus": 4,
      "addr": "http://172.16.1.50:2375",
      "id": "local"
    },
    "image": {
      "restart_policy": {
        "name": "always"  
      },
      "labels": [
        "local"
      ],
      "bind_ports": [
        {
          "proto": "tcp",
          "port": 49153,
          "container_port": 8080
        },
        {
          "proto": "tcp",
          "port": 80,
          "container_port": 8080
        }
      ],
      "links": {
        "redis": "db"
      },
      "type": "service",
      "memory": 32,
      "cpus": 0.1,
      "name": "ehazlett/go-demo"
    },
    "id": "4a5da04b8428e7241a9d9993699513d11b89948399dedfa12"
  }
]

 

2.3 重啟容器

GET /api/containers/<id>/restart
Restart a container
Request
GET /api/containers/3e532/restart HTTP/1.1
Response
HTTP/1.1 204 No Content

2.4 停止容器

GET /api/containers/<id>/stop
Stop a container
Request
GET /api/containers/3e532/stop HTTP/1.1
Response
HTTP/1.1 204 No Content

2.5 銷燬容器

DELETE /api/containers/<id>
Destroy a container
Request
DELETE /api/containers/3e532 HTTP/1.1
Response
HTTP/1.1 204 No Content

 

3、計算節點管理

3.1 獲取計算節點列表

GET  http://192.168.31.149:8080/api/engines

Headers

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

X-Access-Token: admin:$2a$10$P8jnLva2KnYP0xWOLCmYruD0B11z0JIpH3cOnDHplxFdbBIZv.iOW

response

[

    {

        "id": "c589bf34-513e-4a15-8164-146511c5e177",

        "engine": {

            "id": "compute2",

            "addr": "http://192.168.31.149:4243",

            "cpus": 4,

            "memory": 4096,

            "labels": [

                "dd"

            ]

        },

        "health": {

            "status": "up",

            "response_time": 1375306

        },

        "docker_version": "1.5.0-dev"

    }

]

3.2 新增計算節點

POST /api/engines

Add an engine to the cluster

Request

POST /api/engines HTTP/1.1
Content-Type application/json
 
{
  "id": "local",
  "ssl_cert": "",
  "ssl_key": "",
  "ca_cert": "",
  "engine": {
    "id": "local",
    "addr": "http://10.1.2.3:2375",
    "cpus": 4.0,
    "memory": 8192,
    "labels": [
      "local",
      "dev"
    ]
  }
}

 

Response
HTTP/1.1 201 Created

3.3 刪除計算節點

DELETE /api/engines/<id>

Remove an engine from the cluster

Request

DELETE /api/engines/99095f5f-7579-4a70-9369-04ad73c21312 HTTP/1.1

Response

HTTP/1.1 204 No Content

相關文章