docs/apidocs/cloud-api-source/source/includes/service.md

36 KiB

Services

Service

Example

{
  "autodestroy": "OFF",
  "autoredeploy": false,
  "autorestart": "ON_FAILURE",
  "bindings": [
    {
        "host_path": null,
        "container_path": "/tmp",
        "rewritable": true,
        "volumes_from": null
    },
    {
        "host_path": "/etc",
        "container_path": "/etc",
        "rewritable": true,
        "volumes_from": null
    },
    {
        "host_path": null,
        "container_path": null,
        "rewritable": true,
        "volumes_from": "/api/app/v1/service/2f4f54e5-9d3b-4ac1-85ad-a2d4ff25a179/"
    }
  ],
  "cap_add": [
    "ALL"
  ],
  "cap_drop": [
    "NET_ADMIN",
    "SYS_ADMIN"
  ],
  "container_envvars": [
    {
      "key": "DB_PASS",
      "value": "test"
    }
  ],
  "container_ports": [
    {
      "endpoint_uri": "http://wordpress-stackable.admin.srv.dockerapp.io:80/",
      "inner_port": 80,
      "outer_port": 80,
      "port_name": "http",
      "protocol": "tcp",
      "published": true
    }
  ],
  "containers": [
    "/api/app/v1/container/6f8ee454-9dc3-4387-80c3-57aac1be3cc6/",
    "/api/app/v1/container/fdf9c116-7c08-4a60-b0ce-c54ca72c2f25/"
  ],
  "cpu_shares": 100,
  "cpuset": "0,1",
  "cgroup_parent": "m-executor-abcd",
  "current_num_containers": 2,
  "deployed_datetime": "Mon, 13 Oct 2014 11:01:43 +0000",
  "deployment_strategy": "EMPTIEST_NODE",
  "destroyed_datetime": null,
  "devices": [
    "/dev/ttyUSB0:/dev/ttyUSB0"
  ],
  "dns": [
    "8.8.8.8"
  ],
  "dns_search": [
    "example.com"
  ],
  "domainname": "domainname",
  "entrypoint": "",
  "extra_hosts": [
    "onehost:50.31.209.229"
  ],
  "hostname": "hostname",
  "image_name": "tutum/wordpress-stackable:latest",
  "nickname": "wordpress-stackable",
  "labels": {
    "com.example.description": "Accounting webapp",
    "com.example.department": "Finance",
    "com.example.label-with-empty-value": ""
  },
  "link_variables": {
    "WORDPRESS_STACKABLE_1_ENV_DB_HOST": "**LinkMe**",
    "WORDPRESS_STACKABLE_1_ENV_DB_NAME": "wordpress",
    "WORDPRESS_STACKABLE_1_ENV_DB_PASS": "szVaPz925B7I",
    "WORDPRESS_STACKABLE_1_ENV_DB_PORT": "**LinkMe**",
    "WORDPRESS_STACKABLE_1_ENV_DB_USER": "admin",
    "WORDPRESS_STACKABLE_1_ENV_DEBIAN_FRONTEND": "noninteractive",
    "WORDPRESS_STACKABLE_1_ENV_HOME": "/",
    "WORDPRESS_STACKABLE_1_ENV_PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
    "WORDPRESS_STACKABLE_1_PORT": "tcp://wordpress-stackable-1.admin.cont.dockerapp.io:49153",
    "WORDPRESS_STACKABLE_1_PORT_80_TCP": "tcp://wordpress-stackable-1.admin.cont.dockerapp.io:49153",
    "WORDPRESS_STACKABLE_1_PORT_80_TCP_ADDR": "wordpress-stackable-1.admin.cont.dockerapp.io",
    "WORDPRESS_STACKABLE_1_PORT_80_TCP_PORT": "49153",
    "WORDPRESS_STACKABLE_1_PORT_80_TCP_PROTO": "tcp",
    "WORDPRESS_STACKABLE_2_ENV_DB_HOST": "**LinkMe**",
    "WORDPRESS_STACKABLE_2_ENV_DB_NAME": "wordpress",
    "WORDPRESS_STACKABLE_2_ENV_DB_PASS": "szVaPz925B7I",
    "WORDPRESS_STACKABLE_2_ENV_DB_PORT": "**LinkMe**",
    "WORDPRESS_STACKABLE_2_ENV_DB_USER": "admin",
    "WORDPRESS_STACKABLE_2_ENV_DEBIAN_FRONTEND": "noninteractive",
    "WORDPRESS_STACKABLE_2_ENV_HOME": "/",
    "WORDPRESS_STACKABLE_2_ENV_PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
    "WORDPRESS_STACKABLE_2_PORT": "tcp://wordpress-stackable-2.admin.cont.dockerapp.io:49154",
    "WORDPRESS_STACKABLE_2_PORT_80_TCP": "tcp://wordpress-stackable-2.admin.cont.dockerapp.io:49154",
    "WORDPRESS_STACKABLE_2_PORT_80_TCP_ADDR": "wordpress-stackable-2.admin.cont.dockerapp.io",
    "WORDPRESS_STACKABLE_2_PORT_80_TCP_PORT": "49154",
    "WORDPRESS_STACKABLE_2_PORT_80_TCP_PROTO": "tcp",
    "WORDPRESS_STACKABLE_ENV_DB_HOST": "**LinkMe**",
    "WORDPRESS_STACKABLE_ENV_DB_NAME": "wordpress",
    "WORDPRESS_STACKABLE_ENV_DB_PASS": "szVaPz925B7I",
    "WORDPRESS_STACKABLE_ENV_DB_PORT": "**LinkMe**",
    "WORDPRESS_STACKABLE_ENV_DB_USER": "admin",
    "WORDPRESS_STACKABLE_ENV_DEBIAN_FRONTEND": "noninteractive",
    "WORDPRESS_STACKABLE_ENV_HOME": "/",
    "WORDPRESS_STACKABLE_ENV_PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
    "WORDPRESS_STACKABLE_PORT": "tcp://wordpress-stackable-1.admin.cont.dockerapp.io:49153",
    "WORDPRESS_STACKABLE_PORT_80_TCP": "tcp://wordpress-stackable-1.admin.cont.dockerapp.io:49153",
    "WORDPRESS_STACKABLE_PORT_80_TCP_ADDR": "wordpress-stackable-1.admin.cont.dockerapp.io",
    "WORDPRESS_STACKABLE_PORT_80_TCP_PORT": "49153",
    "WORDPRESS_STACKABLE_PORT_80_TCP_PROTO": "tcp",
    "WORDPRESS_STACKABLE_DOCKERCLOUD_API_URL": "https://cloud.docker.com/api/app/v1/service/adeebc1b-1b81-4af0-b8f2-cefffc69d7fb/"
  },
  "linked_from_service": [],
  "linked_to_service": [
    {
      "from_service": "/api/app/v1/service/09cbcf8d-a727-40d9-b420-c8e18b7fa55b/",
      "name": "DB",
      "to_service": "/api/app/v1/service/72f175bd-390b-46e3-9463-830aca32ce3e/"
    }
  ],
  "mac_address": "02:42:ac:11:65:43",
  "memory": 2048,
  "memory_swap": 8192,
  "name": "wordpress-stackable",
  "net": "bridge",
  "privileged": false,
  "public_dns": "wordpress-stackable.admin.svc.dockerapp.io",
  "read_only": true,
  "resource_uri": "/api/app/v1/service/09cbcf8d-a727-40d9-b420-c8e18b7fa55b/",
  "roles": ["global"],
  "run_command": "/run-wordpress.sh",
  "running_num_containers": 1,
  "security_opt": [
  ],
  "sequential_deployment": false,
  "started_datetime": "Mon, 13 Oct 2014 11:01:43 +0000",
  "state": "Partly running",
  "stack": "/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/",
  "stdin_open": false,
  "stopped_datetime": null,
  "stopped_num_containers": 0,
  "synchronized": true,
  "tags": [
        {"name": "tag_one"},
        {"name": "tag-two"},
        {"name": "tagthree3"}
  ],
  "target_num_containers": 2,
  "tty": false,
  "user": "root",
  "uuid": "09cbcf8d-a727-40d9-b420-c8e18b7fa55b",
  "working_dir": "/app"
}

A service is a template used to deploy one or more containers.

Attributes

Attribute Description
uuid A unique identifier for the service generated automatically on creation
resource_uri A unique API endpoint that represents the service
image_name The Docker image name and tag used for the service containers
name A user provided name for the service. This name will be inherited by the service containers and will be used in endpoint URLs, environment variable names, etc.
public_dns An external FQDN that resolves to all IPs of the nodes where the service containers are running on (as an A record with multiple IP entries which will be used by clients in a round-robin fashion). If the service is not publishing any ports, this FQDN will fail to resolve.
state The state of the service (see table Service states below)
net Network mode to set on the containers (see table Network Modes below, more information ../../docker-cloud/apps/service-links/)
pid Set the PID (Process) Namespace mode for the containers (more information ../../reference/run/#pid-settings-pid)
synchronized Flag indicating if the current service definition is synchronized with the current containers.
deployed_datetime The date and time of the last deployment of the service (if applicable, null otherwise)
started_datetime The date and time of the last start operation on the service (if applicable, null otherwise)
stopped_datetime The date and time of the last stop operation on the service (if applicable, null otherwise)
destroyed_datetime The date and time of the terminate operation on the service (if applicable, null otherwise)
target_num_containers The requested number of containers to deploy for the service
current_num_containers The actual number of containers deployed for the service
running_num_containers The actual number of containers deployed for the service in Running state
stopped_num_containers The actual number of containers deployed for the service in Stopped state
stack Resource URIs of the stack that the service belongs to
containers List of resource URIs of the containers launched as part of the service
container_ports List of ports to be published on the containers of this service (see table Service Port attributes below)
container_envvars List of user-defined environment variables to set on the containers of the service, which will override the image environment variables (see table Service Environment Variable attributes below)
labels Metadata in form of dictionary used for every container of this service
working_dir Working directory for running binaries within a container of this service
user Set the user used on containers of this service (root by default)
hostname Set the hostname used on containers of this service
domainname Set the domainname used on containers of this service
mac_address Ethernet device's MAC address used on containers of this service
cgroup_name Optional parent cgroup used on containers of this service.
tty If the containers of this service have the tty enable (false by default)
stdin_open If the containers of this service have stdin opened (false by default)
dns Custom DNS servers for containers of this service
dns_search Custom DNS search domain for containers of this service
cap_add Added capabilities for containers of this service
cap_drop Dropped capabilities for containers of this service
devices List of device mappings for containers of this service
extra_hosts List of hostname mappings for containers of this service
secuirty_opt Labeling scheme for containers of this service
entrypoint Entrypoint to be set on the containers launched as part of the service, which will override the image entrypoint
run_command Run command to be set on the containers launched as part of the service, which will override the image run command
sequential_deployment Whether the containers for this service should be deployed in sequence, linking each of them to the previous containers (see Service scaling for more information)
cpu_shares The relative CPU priority of the containers of the service (see Runtime Constraints on CPU and Memory for more information)
cpuset CPUs in which to allow execution
memory The memory limit of the containers of the service in MB (see Runtime Constraints on CPU and Memory for more information)
memory_swap Total memory limit (memory + swap) of the containers of the service in MB
linked_from_service A list of services that are linked to this one (see table Related services attributes below)
linked_to_service A list of services that the service is linked to (see table Related services attributes below)
bindings A list of volume bindings that the service has mounted (see table Service binding attributes below)
autorestart Whether to restart the containers of the service automatically if they stop (see Crash recovery for more information)
autodestroy Whether to terminate the containers of the service automatically if they stop (see Autodestroy for more information)
roles List of Docker Cloud roles assigned to this service (see Service links for more information)
link_variables List of environment variables that would be exposed in the containers if they are linked to this service
privileged Whether to start the containers with Docker's privileged flag set or not, which allows containers to access all devices on the host among other things (see Runtime privilege for more information)
read_only Whether the filesystem of every service container is read-only or not (false by default)
deployment_strategy Container distribution among nodes (see table Deployment strategies below and Deployment strategies for more information)
tags List of tags to be used to deploy the service (see Tags for more information)
autoredeploy Whether to redeploy the containers of the service when its image is updated in Docker Cloud registry (see Docker Cloud's private registry for more information)
nickname A user-friendly name for the service (name by default)

Service binding attributes

Attribute Description
host_path The host path of the volume
container_path The container path where the volume is mounted
rewritable true is the volume has writable permissions
volumes_from The resource URI of the service

Service Port attributes

Attribute Description
protocol The protocol of the port, either tcp or udp
inner_port The published port number inside the container
outer_port The published port number in the node public network interface
port_name Name of the service associated to this port
endpoint_uri The URI of the service endpoint for this port
published Whether the port has been published in the host public network interface or not. Non-published ports can only be accessed via links.

Service Environment Variable attributes

Attribute Description
key The name of the environment variable
value The value of the environment variable
Attribute Description
name The link name
from_service The resource URI of the origin of the link
to_service The resource URI of the target of the link

Service states

State Description
Not running The service has been created and has no deployed containers yet. Possible actions in this state: start, terminate.
Starting All containers for the service are either starting or already running. No actions allowed in this state.
Running All containers for the service are deployed and running. Possible actions in this state: stop, redeploy, terminate.
Partly running One or more containers of the service are deployed and running. Possible actions in this state: stop, redeploy, terminate.
Scaling The service is either deploying new containers or destroying existing ones responding to a scaling request. No actions allowed in this state.
Redeploying The service is redeploying all its containers with the updated configuration. No actions allowed in this state.
Stopping All containers for the service are either stopping or already stopped. No actions allowed in this state.
Stopped All containers for the service are stopped. Possible actions in this state: start, redeploy, terminate.
Terminating All containers for the service are either being terminated or already terminated. No actions allowed in this state.
Terminated The service and all its containers have been terminated. No actions allowed in this state.

Deployment strategies

Strategy Description
EMPTIEST_NODE It will deploy containers to the node with the lower total amount of running containers (default).
HIGH_AVAILABILITY It will deploy containers to the node with the lower amount of running containers of the same service.
EVERY_NODE It will deploy one container on every node. The service won't be able to scale manually. New containers will be deployed to new nodes automatically.

Network Modes

Strategy Description
bridge Creates a new network stack for the container on the docker bridge.
host Uses the host network stack inside the container.

List all services

import dockercloud

services = dockercloud.Service.list()
import "github.com/docker/go-dockercloud/dockercloud"

serviceList, err := dockercloud.ListServices()

if err != nil {
  log.Println(err)
}

log.Println(serviceList)
GET /api/app/v1/service/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service ps

Lists all current and recently terminated services. Returns a list of Service objects.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

GET /api/app/v1/service/

Query Parameters

Parameter Description
uuid Filter by UUID
state Filter by state. Possible values: Not running, Starting, Running, Partly running, Scaling, Redeploying, Stopping, Stopped, Terminating, Terminated
name Filter by service name
stack Filter by resource URI of the target stack.

Create a new service

import dockercloud

service = dockercloud.Service.create(image="tutum/hello-world", name="my-new-app", target_num_containers=2)
service.save()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.CreateService(dockercloud.ServiceCreateRequest{Image: "tutum/hello-world",  Name: "my-new-app", Target_num_containers: 2})

if err != nil {
  log.Println(err)
}

log.Println(service)
POST /api/app/v1/service/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
Content-Type: application/json

{"image": "tutum/hello-world", "name": "my-new-app", "target_num_containers": 2}
docker-cloud service create -t 2 --name my-new-app tutum/hello-world

Creates a new service without starting it.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

POST /api/app/v1/service/

JSON Parameters

Parameter Description
image (required) The image used to deploy this service in docker format, i.e. tutum/hello-world
name (optional) A human-readable name for the service, i.e. my-hello-world-app (default: image without namespace)
target_num_containers (optional) The number of containers to run for this service initially (default: 1)
run_command (optional) The command used to start the containers of this service, overriding the value specified in the image, i.e. /run.sh (default: null)
entrypoint (optional) The command prefix used to start the containers of this service, overriding the value specified in the image, i.e. /usr/sbin/sshd (default: null)
container_ports (optional) An array of objects with port information to be published in the containers for this service, which will be added to the image port information, i.e. [{"protocol": "tcp", "inner_port": 80, "outer_port": 80}] (default: []) (See table Service Port attributes below)
container_envvars (optional) An array of objects with environment variables to be added in the service containers on launch (overriding any image-defined environment variables), i.e. [{"key": "DB_PASSWORD", "value": "mypass"}] (default: []) (See table Service Environment Variable attributes below)
linked_to_service (optional) An array of service resource URIs to link this service to, including the link name, i.e. [{"to_service": "/api/app/v1/service/80ff1635-2d56-478d-a97f-9b59c720e513/", "name": "db"}] (default: []) (See table Related services attributes below)
bindings (optional) An array of bindings this service has to mount, i.e. [{"volumes_from": "/api/app/v1/service/80ff1635-2d56-478d-a97f-9b59c720e513/", "rewritable": true}] (default: []) (See table Related bindings attributes below)
autorestart (optional) Whether the containers for this service should be restarted if they stop, i.e. ALWAYS (default: OFF, possible values: OFF, ON_FAILURE, ALWAYS) (see Crash recovery for more information)
autodestroy (optional) Whether the containers should be terminated if they stop, i.e. OFF (default: OFF, possible values: OFF, ON_SUCCESS, ALWAYS) (see Autodestroy for more information)
sequential_deployment (optional) Whether the containers should be launched and scaled in sequence, i.e. true (default: false) (see Service scaling for more information)
roles (optional) A list of Docker Cloud API roles to grant the service, i.e. ["global"] (default: [], possible values: global) (see Service links for more information)
privileged (optional) Whether to start the containers with Docker's privileged flag set or not, i.e. false (default: false) (see Runtime privilege for more information)
deployment_strategy (optional) Container distribution among nodes (default: EMPTIEST_NODE, see table Deployment strategies above and Deployment strategies for more information)
tags (optional) A list of tags to be used to deploy the service (see Tags for more information) (default: [])
autoredeploy (optional) Whether to redeploy the containers of the service when its image is updated in Docker Cloud registry (default: false) (see Docker Cloud's private registry for more information)
net (optional) Set the network mode to the containers (default: bridge, possible values: bridge, host)
pid (optional) Set the PID (Process) Namespace mode for the containers (default: none value, possible values: none, host)
working_dir (optional) Working directory for running binaries within a container of this service (default: /)
nickname (optional) A user-friendly name for the service (name by default)
Attribute Description
host_path (optional) The host path of the volume
container_path (required if volumes_from is omitted) The container path where the volume is mounted
rewritable (optional) true is the volume has writable permissions (default: true)
volumes_from (required if container_path is omitted) The resource URI of the service

Service Port attributes

Attribute Description
protocol (required) The protocol of the port, either tcp or udp
inner_port (required) The port number inside the container to be published
outer_port (optional) The port number in the node public network interface to be published (default: dynamic allocation if published is true)
published (optional) Whether to publish the port in the host public network interface or not. Non-published ports can only be accessed via links. (default: false)

Service Environment Variable attributes

Attribute Description
key (required) The name of the environment variable
value (required) The value of the environment variable
Attribute Description
to_service (required) The resource URI of the target of the link
name (optional) The link name

Get an existing service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

log.Println(service)
GET /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service inspect 7eaf7fff

Get all the details of an specific service

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

GET /api/app/v1/service/(uuid)/

Path Parameters

Parameter Description
uuid The UUID of the service to retrieve

Get the logs of a service

Example log line

{
    "type": "log",
    "source": "wordpress-stackable-1",
    "log": "Log line from the container indicated by 'source'",
    "streamType": "stdout",
    "timestamp": 1433779324
}
import dockercloud

def log_handler(message):
	print message

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.logs(tail=300, follow=True, log_handler=log_handler)
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

c := make(chan Logs)

go service.Logs(c)
	for {
		s := <-c
		log.Println(s)
	}
GET /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/logs/ HTTP/1.1
Host: ws.cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Connection: Upgrade
Upgrade: websocket
docker-cloud service logs 7eaf7fff

Get the aggregated logs of all the containers of the service.

Endpoint Type

Available in Docker Cloud's STREAM API

HTTP Request

GET /api/app/v1/service/(uuid)/logs/

Path Parameters

Parameter Description
uuid The UUID of the service to retrieve logs

Query Parameters

Parameter Description
tail Number of lines to show from the end of the logs (default: 300)
follow Whether to stream logs or close the connection immediately (default: true)

Update an existing service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.target_num_containers = 3
service.tags.append({"name":"tag-1"})
service.save()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

if err = service.Update(dockercloud.ServiceCreateRequest{Target_num_containers: 3}); err != nil {
   log.Println(err)
}
PATCH /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
Content-Type: application/json

{"autorestart": "ON_FAILURE", "autodestroy": "OFF", "container_envvars": [{"key": "DB_PASSWORD", "value": "mypass"}],
"container_ports": [{"protocol": "tcp", "inner_port": 80, "outer_port": 80}], "cpu_shares": 512,
"entrypoint": "/usr/sbin/sshd", "image": "tutum/hello-world",
"linked_to_service": [{"to_service": "/api/app/v1/service/80ff1635-2d56-478d-a97f-9b59c720e513/", "name": "db"}],
"memory": 2048, "privileged": True, "roles": ["global"], "run_command": "/run.sh", "sequential_deployment": False,
"tags": [{"name": "tag-1"}], "target_num_containers": 3, "autoredeploy": False}

docker-cloud service scale 7eaf7fff 3
docker-cloud tag add -t tag-1 7eaf7fff
docker-cloud tag set -t tag-2 7eaf7fff

Updates the service details.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

PATCH /api/app/v1/service/(uuid)/

Path Parameters

Parameter Description
uuid The UUID of the service to update

JSON Parameters

Parameter Description
autorestart (optional) Whether the containers for this service should be restarted if they stop, i.e. ALWAYS (possible values: OFF, ON_FAILURE, ALWAYS) (see Crash recovery for more information)
autodestroy (optional) Whether the containers should be terminated if they stop, i.e. OFF (possible values: OFF, ON_SUCCESS, ALWAYS) (see Autodestroy for more information)
container_envvars (optional) An array of objects with environment variables to be added in the service containers on launch (overriding any image-defined environment variables), i.e. [{"key": "DB_PASSWORD", "value": "mypass"}] (See table Service Environment Variable attributes)
container_ports (optional) An array of objects with port information to be published in the containers for this service, which will be added to the image port information, i.e. [{"protocol": "tcp", "inner_port": 80, "outer_port": 80}] (See table Service Port attributes)
cpu_shares (optional) The relative CPU priority of the containers the service describes (see Runtime Constraints on CPU and Memory for more information)
entrypoint (optional) The command prefix used to start the containers of this service, overriding the value specified in the image, i.e. /usr/sbin/sshd
image (optional) The image used to deploy this service in docker format, i.e. tutum/hello-world, tutum/ubuntu:5.6. If no tag is indicated, it will be set to latest by default
linked_to_service (optional) An array of service resource URIs to link this service to, including the link name, i.e. [{"to_service": "/api/app/v1/service/80ff1635-2d56-478d-a97f-9b59c720e513/", "name": "db"}] (See table Related services attributes below)
memory (optional) The memory limit of the containers of the service in MB (see Runtime Constraints on CPU and Memory for more information)
privileged (optional) Whether to start the containers with Docker's privileged flag set or not, i.e. false (see Runtime privilege for more information)
roles (optional) A list of Docker Cloud API roles to grant the service, i.e. ["global"] (possible values: global) (see Service links for more information)
run_command (optional) The command used to start the containers of this service, overriding the value specified in the image, i.e. /run.sh
sequential_deployment (optional) Whether the containers should be launched and scaled in sequence, i.e. true (see Service scaling for more information)
tags (optional) List of new tags the service will have. This operation replaces the tag list
target_num_containers (optional) The number of containers to scale this service to
deployment_strategy (optional) Container distribution among nodes. A service cannot be updated to or from a deployment strategy of EVERY_NODE. (See table Deployment strategies above and Deployment strategies for more information)
autoredeploy Whether to redeploy the containers of the service when its image is updated in Docker Cloud registry (see Docker Cloud's private registry for more information)
net (optional) Set the network mode to the containers (default: bridge, possible values: bridge, host)
pid (optional) Set the PID (Process) Namespace mode for the containers (default: none value, possible values: none, host)
working_dir (optional) Working directory for running binaries within a container of this service (default: /)
nickname (optional) A user-friendly name for the service (name by default)

Start a service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.start()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

if err = service.Start(); err != nil {
   log.Println(err)
}
POST /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/start/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service start 7eaf7fff

Starts all containers in a stopped or partly running service.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

POST /api/app/v1/service/(uuid)/start/

Path Parameters

Parameter Description
uuid The UUID of the service to start

Stop a service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.stop()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

if err = service.Stop(); err != nil {
   log.Println(err)
}
POST /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/stop/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service stop 7eaf7fff

Stops all containers in a running or partly running service.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

POST /api/app/v1/service/(uuid)/stop/

Path Parameters

Parameter Description
uuid The UUID of the service to stop

Scale a service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.target_num_containers = 3
service.save()
service.scale()
POST /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/scale/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service scale 7eaf7fff-882c-4f3d-9a8f-a22317ac00ce 3

Scales the service to its current target_num_containers field.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

POST /api/app/v1/service/(uuid)/scale/

Path Parameters

Parameter Description
uuid The UUID of the service to scale

Redeploy a service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.redeploy()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

//Redeploy(dockercloud.ReuseVolumesOption{Reuse: true}) to reuse the existing volumes
//Redeploy(dockercloud.ReuseVolumesOption{Reuse: false}) to not reuse the existing volumes
if err = service.Redeploy(dockercloud.ReuseVolumesOption{Reuse: false}); err != nil {
   log.Println(err)
}
POST /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/redeploy/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service redeploy 7eaf7fff

Redeploys all containers in the service with the current service configuration.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

POST /api/app/v1/service/(uuid)/redeploy/

Path Parameters

Parameter Description
uuid The UUID of the service to redeploy

Query Parameters

Parameter Description
reuse_volumes Wheather to reuse container volumes for this redeploy operation or not (default: true).

Terminate a service

import dockercloud

service = dockercloud.Service.fetch("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")
service.delete()
import "github.com/docker/go-dockercloud/dockercloud"

service, err := dockercloud.GetService("7eaf7fff-882c-4f3d-9a8f-a22317ac00ce")

if err != nil {
  log.Println(err)
}

if err = service.Terminate(); err != nil {
   log.Println(err)
}
DELETE /api/app/v1/service/7eaf7fff-882c-4f3d-9a8f-a22317ac00ce/ HTTP/1.1
Host: cloud.docker.com
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Accept: application/json
docker-cloud service terminate 7eaf7fff

Terminate all the containers in a service and the service itself. This is not reversible. All the data stored in all containers of the service will be permanently deleted.

Endpoint Type

Available in Docker Cloud's REST API

HTTP Request

DELETE /api/app/v1/service/(uuid)/

Path Parameters

Parameter Description
uuid The UUID of the service to terminate