Warning: This is a stale document and may contain outdated information. Refer to the API docs for updated classes and method signatures.
Starting with Engine version 1.12 (API 1.24), it is possible to manage services using the Docker Engine API. Note that the engine needs to be part of a Swarm cluster before you can use the service-related methods.
The APIClient.create_service
method lets you create a new service inside the
cluster. The method takes several arguments, task_template
being mandatory.
This dictionary of values is most easily produced by instantiating a
TaskTemplate
object.
container_spec = docker.types.ContainerSpec(
image='busybox', command=['echo', 'hello']
)
task_tmpl = docker.types.TaskTemplate(container_spec)
service_id = client.create_service(task_tmpl, name=name)
List all existing services using the APIClient.services
method.
client.services(filters={'name': 'mysql'})
To retrieve detailed information and configuration for a specific service, you
may use the APIClient.inspect_service
method using the service's ID or name.
client.inspect_service(service='my_service_name')
The APIClient.update_service
method lets you update a service's configuration.
The mandatory version
argument (used to prevent concurrent writes) can be
retrieved using APIClient.inspect_service
.
container_spec = docker.types.ContainerSpec(
image='busybox', command=['echo', 'hello world']
)
task_tmpl = docker.types.TaskTemplate(container_spec)
svc_version = client.inspect_service(svc_id)['Version']['Index']
client.update_service(
svc_id, svc_version, name='new_name', task_template=task_tmpl
)
A service may be removed simply using the APIClient.remove_service
method.
Either the service name or service ID can be used as argument.
client.remove_service('my_service_name')